打印从1到100的素数

时间:2016-06-28 07:08:33

标签: c++

以下代码似乎不会打印从1到100的素数。 我正在运行两个for循环,其中找到模数,然后更新计数值(c)。

using namespace std;
int main(){

    for(int i=0,c=0;i<100;i++){
        for(int j=1;j<=i;j++){
            if(i%j==0){
                c++;
            }

        }
         if(c<=2){
                cout<<i<<"\n";
            }
    }
    return 0;
}

2 个答案:

答案 0 :(得分:0)

  for(int i=0,c=0;i<100;i++){

在外部循环c的第一次迭代变为非零之后,它会在进一步的迭代中不断增加。您需要为外循环的每次迭代设置c=0

  int c=0;
  for(int i=0;i<100;i++){
  c=0;
  ...

此外,您可能希望在查找数字是否为素数时查看优化,例如您可以运行从2sqrt(i)的内部循环,然后检查c>0

答案 1 :(得分:0)

声明一个整数类型的变量计数;

 for(int i=1;i<=100;i++)
 {
       count=0;
       for(int j=i;j>=1;j--)
       {
              if(i%j==0)
              {
                   count++;
              }
       }
       if(count==2)
       {
              cout<<i<<"\n";
       }
 }