关于求素数的有关问题
关于求素数的问题
求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 ';
}
求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 ';
}