输入一个数,判断是不是素数
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
for(i=2;i<n;i++)
{
if(n%i==0)
break;
}
if(i==n)
printf("Yes\n");
else
printf("No");
return 0;
}
但其实并不用检测2~n-1,只需检测2~n/2或2~sqrt(n)(算术平方根)就能判定是不是素数。因为n>4时,sqrt(n)<n/2,所以相比之下,sqrt(n)更优化
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,w;
scanf("%d",&n);
w=(int)sqrt(n);//注意,sqrt的返回值是double类型
for(i=2;i<=w;i++)
{
if(n%i==0)
{
printf("No\n");
break; //或者直接return 0;函数结束
}
}
if(w+1==i) //或者增加一个变量起标记作用,输出no时改变变量值,这里进行判断变量是否发生了改变
printf("Yes\n");
return 0;
}
下面这种算是标准的机构化程序设计(由3种基本结构顺序组成):
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
int flag=0; //标记 要有初始值
scanf("%d",&n);
for(i=2;(i<=sqrt(n))&&(flag==0);i++)//sqrt的返回值是double类型
{
if(n%i==0)
flag=1;
}
if(flag==0) //标记flag没有改变
printf("Yes\n");
else
printf("No\n");
return 0;
}