求100内的所有素数
本人是初学者,一直不太明白编程思想,最近正在努力学习,还望各位高手多多指点,先谢谢大家啦!
本人编的主程序如下:
int main()
{
int n=100,flag=1;
cout<<"0-"<<n<<"的所有素数为:";
for(int j=1;j<=n;j++)
{
if(j==1||j==2)
flag=1;
else
{
int k;
for(int i=2;i<j;i++)
{
k=j%i;
if(k==0)
{
flag=0;
break;
}
}
}
if(flag)
cout<<j<<" ";
}
cout<<endl;
return 0;
}
结果只有1 2 3
不论n值为多少,结果都一样,貌似循环从4开始就不再进行。
麻烦各位高手有空帮我看看,到底哪里出了问题,谢谢各位啦!
[解决办法]
#include <iostream>
using namespace std;
int main()
{
int n=100,flag=1;
cout<<"0-"<<n<<"的所有素数为:";
for(int j=2;j<=n;j++)
{
flag=1;
int k;
for(int i=2;i<j;i++)
{
k=j%i;
if(k==0)
{
flag=0;
break;
}
}
if(flag)
cout<<j<<" ";
}
cout<<endl;
return 0;
}
[解决办法]
int main()
{
int n=100,flag=1;
cout<<"0-"<<n<<"的所有素数为:";
for(int j=2;j<=n;j++)
{
int k;
flag=1;
for(int i=2;i<j;i++)
{
if(j%i==0)
{
flag=0;
break;
}
}
if(flag == 1)
cout<<j<<" ";
}
cout<<endl;
return 0;
}
[解决办法]
你的每次循环标识Flag没有给默认初始值。
因此当有一次循环认为不是素数时,就一直是0了,因此下次循环,
及以后循环会一直是0, 不会去打印值的。实际上你的素数是全部解出来的。只是没有打印出来而已。。
int main()
{
int n=100,flag=1;
cout<<"0-"<<n<<"的所有素数为:";
for(int j=1;j<=n;j++)
{
if(j==1
[解决办法]
j==2)
{
//1和2时,都为1
flag=1;
}
else
{
//默认是存在素数的,只有当判断不为素数时,把Flag去掉
flag = 1;
for(int i=2;i<j;i++)
{
if(0 == j%i)
{
//不为素数时,把Flag去掉
flag=0;
break;
}
}
}
if(flag)
cout<<j<<" ";
}
cout<<endl;
return 0;
}
[解决办法]
你在 int k; 下一行加回 flag=1;就可以了
因为内嵌循环去到3的时候就一直 flag为0;
所以后面就不会打印了!
[解决办法]
对于大于2、小于100的整数,如果3、5、7都不是它的因子,那么它是素数
[解决办法]
少了个2
[解决办法]
[解决办法]
Finding prime numbers - Kenneth Haugland
Different schemas for finding prime numbers explained with code
http://www.codeproject.com/Article.aspx?tag=198374988322054872&
[解决办法]
当你flag=0之后,有加条件让flag=1吗?你明显只有j=1或者2(开始的的时候才可以,,当j=3时,进入else,k=1并不为0,此时flag还是等于1输出此时的3,当j=4时,k=0,进入内层if语句,这时flag=0,break循环,当j=5时,k=1,但是flag还是0没变,所以输出不了。
ps:请记住单步调试就知道