【牛コース演習】偶数を構成する最も近い2つの素数を見つける

タイトル説明

任意の偶数(2より大きい)は2つの素数で構成できます。2つの素数が偶数を構成する多くの状況があります。この質問では、指定された最小の偶数を形成する素数ペアの出力が必要です。 2つの素数の違い。
この質問には、複数のサンプル入力のセットが含まれています。

説明を入力してください:

偶数を入力してください

出力の説明:

2つの素数を出力する

サンプル
入力

20

出力

7
13

トピック分析

  • まず、数が素数であるかどうかを判断する必要があります。ここで、素数の範囲は2から平方根nまでで判断されます。この間隔にnで割り切れる数がある場合は、nが素数ではないことを意味し、そうでない場合はnが素数です。
  • この偶数の1/2から両側に適切な素数を見つけて、2つの素数の差が最小になるようにします。見つけたら、ループから飛び出すことができます。

参照コード

#include <iostream>
#include <math.h>

using namespace std;

bool isPrime(int n)
{
    int sq = sqrt(n);
    for(int i = 2; i <= sq; ++i)
    {
        if(n%i == 0)
            return false;
    }
    return true;
}

int main()
{
    int num;
    while(cin >> num)
    {
        int half = num/2;
        int i = 0;
        for(i = half; i > 2; ++i)
        {
            if(isPrime(i) && isPrime(num-i))
                break;
        }

        cout << num-i << endl << i << endl;
    }
    return 0;
}

おすすめ

転載: blog.51cto.com/14289099/2621903