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