[牛 course Exercises] 짝수를 구성하는 가장 가까운 두 소수 찾기

제목 설명

모든 짝수 (2보다 큰)는 두 개의 소수로 구성 될 수 있습니다. 두 개의 소수가 짝수를 구성하는 경우가 많습니다.이 질문에는 가장 작은 숫자로 지정된 짝수를 형성하는 소수 쌍의 출력이 필요합니다. 두 소수의 차이.
이 질문에는 여러 세트의 샘플 입력이 포함되어 있습니다.

설명 입력 :

짝수를 입력하세요.

출력 설명 :

두 개의 소수 출력

샘플
입력

20

산출

7
13

주제 분석

  • 먼저 숫자가 소수인지 확인해야합니다. 여기서 소수의 범위는 2에서 제곱근 n까지로 판단합니다.이 구간에 n으로 나눌 수있는 숫자가 있으면 n은 소수가 아니라는 의미이고, 그렇지 않으면 n은 소수입니다.
  • 이 짝수의 1/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