素数判定

来源:互联网 发布:网络恶意攻击怎么报警 编辑:程序博客网 时间:2024/04/28 11:30

 素数判定

 素数的定义是只能被1和他本身整除,1不是素数,需要单独判断。.因此要判断一个数是否为素数.就要判断它能不能被比他小的数整除,这是一个算法.(运算速度低下)

算法改进:.要判断一个数是否为素数,只要判断比它开根号后的数小的数,能否把它整除.

     这一点可以用反证法来证明:  如果N是合数,则一定存在大于1小于N的整数d1和d2,使得N=d1×d2。 如果d1和d2均大于√N,则有:N=d1×d2>√N×√N=N。 而这是不可能的,所以,d1和d2中必有一个小于或等于√N。


由此可以得到一个较快的素数判断算法.

源代码:

#include <stdio.h>#include<math.h> int fun(int a){int i;float n; n=sqrt((float)a);    for(i=2;i<=n;i++)    {    if(a%i==0) break;}    if(i>n)   return 1;//是素数 返回 1 else   return 0;//不是素数返回 0 }int main(){    int a,t;    while(scanf("%d",&a),a)    {    t=fun(a);        if(a==1)//对 1 单独判断        t=0;         if(t==1)            printf("YES\n");        if(t==0)            printf("NO\n");}    return 0;}


0 0
原创粉丝点击