素数判定

 素数判定

 素数的定义是只能被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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值