Code:
/*Design a program that finds all numbers from 1 to 1000 whose prime factors, when added
together, sum up to a prime number (for example, 12 has prime factors of 2, 2, and 3, which
sum to 7, which is prime). Implement the code for that algorithm.*/
#include <iostream>
using namespace std;
int primes(int n);
bool isPrime(int divisor);
bool check(int result);
int main()
{
// Check numbers from 1 to 1000
for (int i = 2; i <= 1000; ++i)
{
int result = primes(i);
if (check(result))
{
cout << i << endl;
}
}
}
bool isPrime(int divisor)
{
for (int j = 2; j <= divisor/2; j++)
{
if (divisor % j == 0)
return false;
}
return true;
}
int primes(int i)
{
int p = i;
int divisor = 2;
int sum = 0;
while (p != 1)
{
cout << "p: " << p << endl;
cout << "le divisor: " << divisor << endl;
if (isPrime(divisor))
{
if (p % divisor == 0)
{
p = p / divisor;
sum += divisor;
}
else
{
divisor += 1;
}
}
}
return sum;
}
bool check(int result)
{
for (int i = 2; i <= result / 2; i++)
{
if (result % i == 0)
return false;
}
return true;
}
My code does not do what is asked.
Could anyone check it up?