讲解一下判素数的问题。.

来源:百度知道 编辑:UC知道 时间:2024/06/19 23:35:39
这样的
#include <math.h>
main()
{int n,i,k;
for(n=101;n<=200;n=n+2)
{k=sqrt((float)n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>k)printf("%4d",n);
}
}

有几个问题:累加n的时候是加的2,而不是1,老师说是优化算法,为什么?

最下面要i>k这个条件是怎么回事.

具体给我讲解一下,一直以来我都没有理解这个判素数的问题。

这个程序是要输出从100到200之间的质数,n+=2是为了跳过将102、104这些明显不是质数的数从而节省时间;

i>k是为了判断n是不是质数,如果从2到k之间的数可以整除n,那么说明n不是质数,此时中断内循环,由于提前退出循环,所以i的值一定小于k,而如果2到k之间的数都不能整除n,那么内循环结束后i==k+1

所以最终根据i的值就可以判断n是否为质数。

你去搜搜什么叫素数就知道了.!!!!!!!

这是判断1-200之间的素数吧!