在这个问题中,我们给出了一个奇数 N。我们的任务是将一个奇数表示为质数之和。
表示数时最多可以有三个素数。
输入: N = 55
输出: 53 + 2
解决方法:
奇数可以表示为素数之和。考虑到这些素数,我们有三种情况。
情况 1: 如果 n 是素数,则表示为一个素数n 的和。
情况 2: 如果 (n - 2) 是素数,则表示为两个素数 n-2 和 2 之和。
情况 3: ( n - 3 ) 是一个偶数,可以使用哥德巴赫猜想方法表示为两个素数之和,其中我们将检查数 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<<"号码 "<<n<<" expressed as sum of primes is "; primeAsSumofPrime(n); return 0; }
号码 561 expressed as sum of primes is 3 + 11 + 547