Alex Alllain 著の「Jumping into C++」という本を使用して C++ の学習を開始しましたが、1 つの演習で問題が発生しました。演習のテキストは次のとおりです。
1 から 1000 までのすべての数のうち、それらの素因数を足し合わせると素数になる (たとえば、12 には 2、2、3 の素因数があり、これらの合計が素数である 7) を見つけるプログラムを設計してください。 . そのアルゴリズムのコードを実装します。
良いと思ったコードを書きましたが、うまくいきません。
ただし、コードは次のとおりです。
#include <iostream>
using namespace std;
int main()
{
for (int number = 2 ; number < 1000 ; number++)
{
int sum = 0;
int something = number;
if (primeNumber(number) == true)
{
sum = number;
}
else
{
while (something != 1)
{
for (int factor = 2 ; factor <= number; factor++)
{
if (primeNumber(factor) == true)
{
while(something % factor == 0)
{
something /= factor;
sum += factor;
}
}
}
}
}
if (primeNumber(sum)== true)
{
cout << number << endl;
}
}
}
int primeNumber(int x)
{
for (int i = 2 ; i < x; i++)
{
if (x % i == 0)
{
return false;
}
else
{
return true;
}
}
}