关于求素数的有关问题

关于求素数的问题
求2-300之间所有素数

#   include <iostream.h>
#   include <math.h>
#   include <iomanip.h>

void   main(void)
{
int   i,j,k,l;
cout < <setw(8) < <2 < <setw(8) < <3;
for(k=2,i=5;i <300;i+=2){
j=(int)sqrt(i);
for(l=3;l <=j;l++)
if(i%l==0)break;
if(l> =j+l){//--------------------------??????
cout < <setw(8) < <i;
k++;
if(k%5==0)cout < < '\n ';
}
}
cout < < '\n ';
}

这是我从书上看来的程序,但是我在VC++里面运行,怎么只显示出来2与3两个数字?

还有if(l> =j+l),这个语句不太理解。(程序中已标出)

------解决方案--------------------
# include <iostream.h>
# include <math.h>
# include <iomanip.h>

void main(void)
{
int i,j,k,l;
cout < <setw(8) < <2 < <setw(8) < <3;
for(k=2,i=5;i <300;i+=2){
j=(int)sqrt(i);
for(l=2;l <=j;l++)
if(i%l==0)break;
if(l> =j){
cout < <setw(8) < <i;
k++;
if(k%5==0)
cout < <endl;
}
}
cout < <endl;
}

这样就可以了。
------解决方案--------------------
# include <iostream.h>
# include <math.h>
# include <iomanip.h>

void main(void)
{
int i,maxpossible,counter,l;
counter=2;
cout < <setw(8) < <2 < <setw(8) < <3;
for(i=5;i <300;i+=2) {
maxpossible=(int)sqrt(i);
for(l=3;l <=maxpossible;l++)
if(i%l==0)break;
if(l> =maxpossible){//如果大于sqrt(i)了那么一定就是质数了
cout < <setw(8) < <i;
counter++;
if(counter%5==0)cout < < '\n ';
}
}
cout < < '\n ';
}