0

私はコンピューター サイエンスの初心者で、簡単な質問がありました。私は、2 つの整数入力を取り、それらの間のすべての素数を出力するプログラムを作成しようとしていました。

私が抱えている問題は、ネストされた for ループで break を使用するときです。素数が見つかった後、外側の for ループの次の周回では、ネストされた for ループにヒットしません。したがって、たとえば 8 ~ 15 の間の素数を検索すると、「11 12 13 14 15」と出力されます。最初は正しいですが、素数を見つけた後、残りの有界数も素数であると述べています。

#include <iostream>
using namespace std;

int main()
{
    // Prime number finder:
    cout << "Enter two numbers and I will find the prime numbers between them.\n\n";

    int num1, num2, i = 2;
    bool valid;

    cout << "Enter the lower limit: ";
    cin >> num1;
    cout << endl << "Enter the higher limit: ";
    cin >> num2;
    if (num2 <= num1)
    {
        cout << "Enter a number that is larger than the lower limit./n";
    }

    if (num1 <= 1)
    {
        cout << "1 2 ";
        num1 = 3;
    }
    else if (num1 == 2)
    {
        cout << "2 ";
        num1 = 3;
    }

    for (num1; num1 <= num2; num1++)
    {
        valid = true;

        for (i; i < num1; i++)
        {
            if ((num1 % i) == 0)
            {
                valid = false;
                break;
            }
        }

        if (valid == true)
            cout << num1 << " ";
    }

    return 0;
}
4

2 に答える 2