码迷,mamicode.com
首页 > 其他好文 > 详细

————————————————素数的快速判断方法————————————————————

时间:2015-11-30 20:02:03      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

1:   当n>=6   且n-1和n+1是孪生素数的话那么n一定是6的倍数。

证明:因为n-1和n+1为素数----①

    所以n-1和n+1为奇数----② 

   所以n是偶数是2的倍数--③

   假设n不是3的倍数,得:

n=3x+1或n=3x+2,

如果n=3x+1则n-1=3x这和①违背所以n≠3x+1

如果n=3x+2,zen+1=3(x+1)与①违背

所以假设不成立,既n是3的倍数又有②结论则n是6的倍数。

由上面的规律可以推出下面的结论:

如x>=1且n=6x+1或n=6x+1,那么n一定不是2和3的倍数

证明。

因为n=6x-1和n=6x+1,即n=2*(3x)+1或n=3*(2x)-1

所以n一定不是2和三的倍数

素数的出现规律:

当n>=5是,如果n是素数那么n mod 6=1或n mod6=5,即n一定出现在6x(x>=1)的两侧.

证明:

当x>=1是,有如下的表示方法:

~~~~~~~6x,6x+1,6x+2,6x+3,6x+4,6(x+1),6(x+1)+1,~~~~~

所以不再6x两侧的数为6x+2,6x+3,6x+4即2(3x+1),3(x2+1),2(2x+2),他们一定不是素数,所以素数出现6x的两侧。

 

 

下面附上  快速判断一个数字是否为素数的方法。

 

 

 1 bool isPrime(int num)  
 2 {  
 3     if (num == 2 || num == 3)  
 4     {  
 5         return true;  
 6     }  
 7     if (num % 6 != 1 && num % 6 != 5)  
 8     {  
 9         return false;  
10     }  
11     for (int i = 5; i*i <= num; i += 6)  
12     {  
13         if (num % i == 0 || num % (i+2) == 0)  
14         {  
15             return false;  
16         }  
17     }  
18     return true;  
19 }  

 

————————————————素数的快速判断方法————————————————————

标签:

原文地址:http://www.cnblogs.com/A-FM/p/5007910.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!