首页 > 代码库 > 判断一个数是否是质数
判断一个数是否是质数
#include<stdio.h>
int main()
{
int i,n;
scanf("%d",&n);
if(n<=1) //当输入的数小于等于1时,可直接判定为不是质数,不输出结果
{
return 0;
}
else
{
for(i=2;i<n;i++) //建立一个for循环,并令i=2
{
if(n%i==0)
{
break; //如果输入的整数n能够整除i,跳出循环
}
}
if(i==n)
{
printf("yes\n"); //跳出循环后,如果i+1=n,那么说明n只能整除1和它本身,输出“yes”
}
else
{
printf("no\n"); //如果不是,则说明n还有其他除数,则n不为质数,输出“no”
}
}
return 0;
}
这样的代码太过复杂,数学老师会告诉我们当判断一个质数时,只需要检查到根号n就可以了,我们可以简化代码,让它变成如下情况:
#include<stdio.h>
#include<math.h> //在这里,我们需要用到math来使用数学符号
int main()
{
int i,n,t;
scanf("%d",&n);
t=sqrt(n); //sqrt表示开根号的意思,t=根号n
for(i=2;i<=t;i++)
{
if(t%i==0) break; //当t求i的余数等于0时,退出循环
}
if(i>t) //如果i>t,说明是因为没有等于0的余数,i的值超过了t的值而跳出循环,所以n是质数
{
printf("yes\n");
}
else //如果不是,则说明是因为有等于0的余数才退出的循环,所以n不是质数
{
printf("no\n");
}
return 0;
}
判断一个数是否是质数