素数判断的两个方法

素数判断的两个方法

法1:最为普通的方法从1遍历到sqrt(n),上核心代码

bool ss(int n){
	for(int i=2;i<=sqrt(n);i++)
		if(n%i==0) return 0;
	return 1;
}

法2:优化方法:
一个数是素数(n>3)的必要条件是
N一定可以写成6k+1或6k-1

N=2或3时特判一下,由必要条件可知:
如果N不在6的倍数旁边, 一定不是素数.
然后从5=6-1开始遍历,
6k-1 6k 6k+1 6k+2 6k+3 6k+4 6k-1 6(k+1) 6(k+1)+1
从上面数组可看出, 6k,6k+2,6k+4,含因数2肯定不是素数,6k+3 含因数3也不是,所以只用看6k+1,6k-1,如果N的因数含有6k+1或6k-1肯定不是素数因为(除了1和本身还有一个因子)
所以这些情况都不是的时候 该数肯定为素数
下面上核心代码。

bool ss(int n){
	if(n==2||n==3) return 1;
	if(n%6!=1||n%6!=5) return 0;
	for(int i=5;i<=sqrt(n);i+=6)
		if(n%i==0||n%(i+2)==0)
			return 0;  
	return 1;	
} 
全部评论

相关推荐

宇算唯航:目测实缴资本不超100W的小公司
点赞 评论 收藏
分享
这是什么操作什么意思,这公司我服了...
斯派克spark:意思是有比你更便宜的牛马了
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
无实习如何秋招上岸
点赞 评论 收藏
分享
合不合适,我自己说了才算
码农索隆:hr:“真执着啊,来我公司当法人吧”
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务