判断质数的一种方法

1.对于一个大于5的数来说,如果其模6得到的不是1或者5的话,那么它一定是个合数。

根据数学分析可知6n,6n+2,6n+3,6n+4一定是合数。

2.那么如果一个大于5的数模6等于1或5的话,它是否一定是质数呢?

答案是否定的,比如25就不是,也就是说这个条件是成为质数的必要条件而非充分条件,不过利用这个可以减少筛选的范围。

下面为代码。

bool isprime(int n)
{
	if(n==2||n==3)
	   return 1;
	//如果这个数不在6n的两侧,肯定是合数,直接筛掉 
	else if(n%6==0||n%6==2||n%6==3||n%6==4)
	   return 0;
	//对6n的两侧的数进行判断 
	else
	   	for(int i=5;i<=sqrt(n);i+=6)
	   	    if (n % i == 0 || n % (i + 2) == 0) //i和i+2就是6n两侧的数 
			    return 0;
	return 1; 

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值