我在这里有该程序的代码,以列出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/