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