您的位置:首页 > 其它

快速素数判断的方法

2014-06-06 20:38 295 查看
#include <stdio.h>

#include <math.h>

#define LL long long

bool f(LL n)

{

if(n == 2 || n == 3 || n == 5)

return true ;

if(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n == 1)

return false ;

LL i = 7 ;

int m = (int)(sqrt(n)) ;

while(i <= m)

{

if(m % i == 0)

return false ;

i += 4 ;

if(m % i == 0)

return false ;

i += 2 ;

if(m % i == 0)

return false ;

i += 4 ;

if(m % i == 0)

return false ;

i += 2 ;

if(m % i == 0)

return false ;

i += 4 ;

if(m % i == 0)

return false ;

i += 6 ;

if(m % i == 0)

return false ;

i += 2 ;

if(m % i == 0)

return false ;

i += 6 ;

}

return true ;

}

int main()

{

LL n ;

while(scanf("%lld", &n)!=EOF)

{

if( f(n) )

printf("YES\n");

else

printf("NO\n");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: