//判断一个数num是否为素数
#include
int main()
{
int num,i,n=0;
while(1)
{
scanf("%d",&num);//输入一个数num
if(num==2) printf("%d是素数\n",num);
else if(num>=3)
{
for(i=1;i<=num;i++)
{
if((num%i)==0) n++;
}
if(n==2) printf("%d是素数\n",num);
else printf("%d不是素数\n",num);
n=0;
}
else printf("%d不是素数\n",num);
}
return 0;
}
就是判断从2开始到一个数的平方根中若不能被他整除,那么该数就是素数;
网上代码是若能整除则跳出,所有条件不能整除则输出是素数。
他是只需要一种判断,不满足则跳出,那么跳出后i < n,所以可以用。
你的代码思路没有错,只不过网上没有使用的优化的算法,如果你想弄明白怎么优化,那你需要在数学中找答案
网上的代码意思是:n就是你输入的任意数,判断它是否是素数的方法是用大于2小于n的数去除n,若能整除即不是素数,跳出循环;若数一直增加到n+1都没有被整除,即可输出“素数”。
你的源程序:3是素数,很简单,所以用if来提醒输入大于3的数,你的只是另一种素数算法,是优化的算法,更快。因为只需用2到根号a去判断。
第一个if:如果输入的数n,能够整除小于n的某一个数i,证明数n有约数i,此时break后,i的值一定是小于n的。
第二个if:如果i的值比n大,说明上述的for循环没有进入到第一个if里面,所以从2到n-1之间没有一个数是n的约数。所以可以判定n是素数。