试图统计所有素数但我的输出很疯狂

时间:2013-09-26 03:24:09

标签: primes counting

    #include <iostream> 
    using namespace std;



    int main () 
    {
       int count = 0;

          for (int x=2; x < 100; x++)

              for (int y=2; y < x; y++)
              {

                 if (x % y == 0) 
                 break;
                 else if (x == y + 1)
                      count++;
                      cout << x << " ";

       cout << count;
       system("pause")
       return 0;




    }

我想打印素数,并打印出2到100之间的素数。这应该是24.相反,我得到了大量的素数,然后是24号。我确定这是一个逻辑错误,只是没有抓住它。

1 个答案:

答案 0 :(得分:0)

首先,存在语法错误。

其次,除非你知道自己在做什么,否则总是使用if/else大括号 - 这是一个错误。

第三,使用system()需要#include <cstdlib>。如果你不允许(g++没有),你的编译器就会松懈。

第四,pause不是独立程序,而是内置cmd.exe,因此system()可能会失败,具体取决于所使用的编译器/环境。更简洁的方式是C++ keypress: getch, cin.get?

最后,您的算法非常不理想。例如。 y只需要升级到x/2+1,并且存储已在数组/列表中找到的素数并仅尝试它们是合理的。