【问题标题】:Trying to count all the prime numbers but my output is crazy试图计算所有素数,但我的输出很疯狂
【发布时间】:2013-09-26 03:24:08
【问题描述】:
    #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。我确定这是一个逻辑错误,只是没有抓住它。

【问题讨论】:

    标签: primes counting


    【解决方案1】:

    首先,存在语法错误。

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

    第三,使用system() 需要#include &lt;cstdlib&gt;。如果允许您不这样做,您的编译器就会松懈(g++ 不允许)。

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

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

    【讨论】:

    • 编译它不是它运行良好的问题我只是希望能够在 elseif 语句捕获它们时计算素数然后打印出总数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    相关资源
    最近更新 更多