一种素数判定算法的数学证明

来源:互联网 发布:简洁大气 网站 源码 编辑:程序博客网 时间:2024/06/09 22:16
public boolean isPrime(int k){    if(k==2)        return true; 
    if(k<2||k>2 && k%2==0)        return false;//去除1与所有偶数 ,剩余>=3的奇数    int j = (int)Math.sqrt(k);    if(j%2==0)        j--;//获得测试范围的最大奇数    while(j>2&& k%j!=0)        j-=2;    return j<2;}}

算法 首先去除素数2,然后去除1与所有的偶数,只对大于等于3的奇数进行判断,接着 对K进行平方向下取整赋给J;

根据算数基本定理:任何正整数N都可以表示成素数的乘积

   N = P1...Pm,P1<=...Pm.

此外,此展开式是唯一的;

若P为素数则 m=1,

当jJ<2时,则返回 true,

当J>2时 ,执行J (或J-1)-= 2 直到 J<2返回true;

当K为合数(最小的奇合数是9)时,m>=2,可知 P1<=J(或J-1)<=Pm 且 J>=3,又P1属于J取值范围子集[J(或 J-1),J-2(或J-3),...,3],那么 K%J==0时,J定>=3 则返回false.





0 0
原创粉丝点击