C++求2到300之间的素数

来源:百度知道 编辑:UC知道 时间:2024/06/07 10:07:37
#include<iostream.h>
#include<math.h>
void main(void)
{
int i,j,k,l;
cout<<" "<<2<<" "<<3<<" ";
for(k=2,i=5;i<300;i+=2){
j=sqrt(i);
for(l=3;l<=j;l++)
if(i%l==0)break;
if(l>=j+1){
cout<<i<<" ";
k++;
if(k%5==0)cout<<'\n';}
}
cout<<"\n";
}
中的if(l>=j+1)这条语句我没看明白,什么意思呢?

就是判断上面的循环是以什么方式结束的,如果l>=j+1,说明在3到j之间没有i的因子,所以是素数,否则不是素数。

判断一个数n是否为素数,只要判断是否有2到n的平方根之间的数能否被n整除,如能则不是素数。

你把if(l>=j+1)改为if(l==j+1)就好理解了。
for(l=3;l<=j;l++)
if(i%l==0)break;
如果之间没有能被整除的数,这时循环就会走到头,由于l++,l变成了j+1。
if(l>=j+1)
cout<<i<<" ";
表示只打印素数,如果不是素数,这时l不可能>=j+1的,因为if(i%l==0)break跳出了。