我这里有代码,程序列出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)
问题是:
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)
| 归档时间: |
|
| 查看次数: |
7687 次 |
| 最近记录: |