首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求100内的全部素数

2013-09-09 
求100内的所有素数本人是初学者,一直不太明白编程思想,最近正在努力学习,还望各位高手多多指点,先谢谢大家

求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、小于100的整数,如果3、5、7都不是它的因子,那么它是素数

少了个2


[解决办法]

引用:
Quote: 引用:

对于大于2、小于100的整数,如果3、5、7都不是它的因子,那么它是素数

少了个2
大于2的素数(即奇素数)不可能以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:请记住单步调试就知道

热点排行