이 문제에서는 홀수 N이 주어집니다. 우리의 임무는 소수의 합으로 홀수를 표현하는 것입니다.
숫자를 표현하는 동안 최대 3개의 소수가 있을 수 있습니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
입력: N =55
출력: 53 + 2
해결 방법:
홀수는 소수의 합으로 나타낼 수 있습니다. 이 소수를 고려하면 세 가지 경우가 있습니다.
사례 1: n이 소수이면 하나의 소수 n의 합으로 표시됩니다. .
사례 2: (n - 2)가 소수이면 두 소수 n-2와 2의 합으로 표현됩니다. .
사례 3: ( n - 3 )은 Goldbach의 추측 방법을 사용하여 두 소수의 합으로 나타낼 수 있는 짝수입니다. 여기서 숫자 A가 소수이고 숫자 {(n-3) - A }도 소수인지 확인합니다. 인쇄하십시오.
우리 솔루션의 작동을 설명하는 프로그램,
예시
#include <iostream> using namespace std; bool isPrime(int x) { if (x == 0 || x == 1) return false; for (int i = 2; i * i <= x; ++i) if (x % i == 0) return false; return true; } void primeAsSumofPrime(int n) { if (isPrime(n) ) cout<<n; else if (isPrime(n - 2)) cout<<"2 "<<"+ "<<(n - 2); else{ cout<<"3 "<<"+ "; n -= 3; for (int i = 0; i < n; i++) { if (isPrime(i) && isPrime(n - i)) { cout<<i<<" + "<<(n - i); break; } } } } int main() { int n = 561; cout<<"The number "<<n<<" expressed as sum of primes is "; primeAsSumofPrime(n); return 0; }
출력 -
The number 561 expressed as sum of primes is 3 + 11 + 547