我通过使用 Alex Alllain 的《Jumping into C++》一书开始学习 C++,而我在一项练习中遇到了麻烦。练习文本如下:
设计一个程序,找出从 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;
}
}
}