快速判断素数

来源:互联网 发布:利达128enm编程 编辑:程序博客网 时间:2024/04/29 08:23
</pre><pre code_snippet_id="396514" snippet_file_name="blog_20140617_2_9134400" name="code" class="html">
#include <stdio.h>#include <math.h>#define LL long longbool 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;}

0 0
原创粉丝点击