六倍素数法(快速)

六倍素数法:
对于大于等于5的数我们可以用6的倍数表示,
6n-1 6n 6n+1 6n+2 6n+3 6n+4
5 -----6 – 7 ---- -8 ----- 9 ----- 10
11 —12 -13 ----14 — 15 ---- 16
17 —18 -19 ---- 20 ----21 ……
6的真因数有1, 2, 3
6n 可以被2 或者3整除
6n+2, 6n+4 可以被2整除
6n+3 可以被3整除
我们先排除能被2, 3整除的数,我们6个数只需要判断
6n-1和6n+1两个数,极大提高了效率。

int isPrime(int n)
{
	if (n <= 1)
		return 0;
	if (n == 2 || n == 3 || n == 5)
		return 1;
	if (n % 2 == 0 || n % 3 == 0)
		return 0;
	for (int i = 6; i <= sqrt(n); i += 6)
		if (n % (i - 1) == 0 || n % (i + 1) == 0)
			return 0;
			
	return 1;
} 
发布了24 篇原创文章 · 获赞 0 · 访问量 139

猜你喜欢

转载自blog.csdn.net/qq_45624989/article/details/105256348