n>2 の偶数が与えられたとき、和が n である素数を見つけます。素数を見つける関数を使用する必要があります。
たぶん、このようなことを始めることができますか?:
for (int i = 2; i < n; i++)
{
if (IsPrime(i) && IsPrime(n - i))
break;
}
宿題だと思うので、始めるためのヒントを紹介します。
1) 数値 N が素数かどうかを調べるには、N/2 まで反復し、その倍数が見つかった場合にブレークします。空間と時間の複雑さをあまり気にしないのであれば、ネストされた for ループが最も簡単な解決策です。
解決策全体ではなく、出発点となるヒントを提供します。
これは可能な解決策の 1 つであり、THE 解決策ではありません。
まず、数値が素数かどうかをチェックする関数を定義します。
bool isPrime(const unsigned& number) {
for (unsigned i = 2; i < number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
以下も定義します。
struct PrimeSum {
unsigned first;
unsigned second;
};
PrimeSum searchPrimeAddend(const unsigned& number, const vector<unsigned>& v) {
// your code to find two number iterating the vector
}
あなたのメインで:
int main(const int argc, const char* argv[]) {
const unsigned N = 13;
std::vector<unsigned> primeList;
for (unsigned i = 3; i < N; i += 2) {
if (isPrime(i)) {
primeList.push_back(i);
}
}
PrimeSum primes = searchPrimeAddend(N, primeList);
}
疑似コード
これにより、いくつかの C++ の宿題が残されます
別のソリューション (おそらく 1 回の実行でより効率的)