在C++中打印3到100之间的所有素数

use*_*419 1 c++

我这里有代码,程序列出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;
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 6

问题是:

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

什么时候应该

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

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

您还必须prime在每次迭代时重置为true:

for (int x = 3; x <= 100; x++)
{
    prime = true;
Run Code Online (Sandbox Code Playgroud)