求素数

Posted on 2018-04-12 20:12  som_nico  阅读(94)  评论(0编辑  收藏  举报

 

 

发现素数2 3 5 7 11 13...

除了2  3 之外 都是6的倍数+1 -1

可以快一些...

 

bool fun( int num )
{
                 //两个较小数另外处理
                 if(num ==2|| num==3 )
                                 return 1 ;
                 //不在6的倍数两侧的一定不是质数
                 if(num %6!= 1&&num %6!= 5)
                                 return 0 ;
                 int tmp =sqrt( num);
                 //在6的倍数两侧的也可能不是质数
                 for(int i= 5;i <=tmp; i+=6 )
                                 if(num %i== 0||num %(i+ 2)==0 )
                                                 return 0 ;
                 //排除所有,剩余的是质数
                 return 1 ;
}