我在这里有该程序的代码,以列出3-100之间的所有素数。我的主要问题是该程序仅打印出三个。我认为出于某种原因它正在退出循环之类。我在for语句中放置了一个中断,以便在发现数字不是素数后立即离开内部for循环,以便可以将其打印出来。但是,它似乎没有用。

#include <iostream>
#include <conio.h>
#include <cmath>

using namespace std;

int main()
{
    bool prime = true;

    for (int x = 3; x <= 100; x++)
    {
        for (int y = 2; y <= (x - 1); y++)
        {
            if ((x % y) == 0)
                prime = false;
            break;
        }

        if (prime == true)
            cout<<x<<endl;
   }

    getche();
    return 0;
}

最佳答案

问题是:

for (int y = 2; y <= (x - 1); y++)
{
    if ((x % y) == 0)
        prime = false;
        break;
}

什么时候应该
for (int y = 2; y <= (x - 1); y++)
{
    if ((x % y) == 0)
    {
        prime = false;
        break;
    }
}

除非满足第一个条件,否则每次将prime设置为true时都会中断。

您还必须在每次迭代中将prime重置为true:
for (int x = 3; x <= 100; x++)
{
    prime = true;

关于c++ - 在C++中打印3-100之间的所有质数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12867695/

10-11 19:40