Okay, so the following code is "supposed" to print numbers 1-1000 whose prime factors sum up to be a prime number. What it DOES print is seemingly random numbers that follow no pattern (primes/not primes). Here's my code:
Code:
#include <iostream> //Print numbers 1-1000 whose prime factors added together form a prime number
bool isPrime(int number);
bool isDivisible(int number, int divisor);
int sum_of_pf(int number);
using namespace std;
int main()
{
for(int i=1;i<=1000;i++)
{
int S=sum_of_pf(i);
if(isPrime(S))
{
cout<<i<<endl;
}
}
cin.ignore();
cin.get();
}
bool isPrime(int number)
{
for(int i=2; i<number; i++)
{
if(isDivisible(number, i))
{
return false;
}
}
return true;
}
bool isDivisible(int number, int divisor)
{
return number%divisor==0;
}
int sum_of_pf(int number)
{
int sum=0;
int aux=number;
for(int i=2;i<=number/2;i++)
{
while(aux%i==0)
{
sum+=i;
aux/=i;
}
}
return sum;
}
Can someone point out my error(s)?