-1
    #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。我确信这是合乎逻辑的错误,只是没有抓住它。

4

1 回答 1

0

首先,存在语法错误。

if/else其次,除非您知道自己在做什么,否则请始终使用花括号- 存在与此相关的错误。

第三,使用system()requires #include <cstdlib>。如果允许您不这样做(g++不这样做),您的编译器就会松懈。

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

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

于 2013-09-26T03:46:46.290 回答