An integer is said to be a perfect number if the sum of its divisors, including 1 (but not the number itself),
is equal to the number. For example, 6 is a perfect number, because 6 = 1 + 2 + 3. Write a function
isPerfect() that determines whether parameter number is a perfect number. Use this function in a
program that determines and prints all the perfect numbers between 1 and 1000. Print the divisors of
each perfect number to confirm that the number is indeed perfect. Challenge the power of your computer
by testing numbers much larger than 1000.
#include <iostream>
using namespace std;
bool isPerfect(int n){
int sum = 0;
for(int i = 1; i<n; i++)
if(n%i==0)
sum+=i;
if(sum==n) return true;
return false;
}
void displayDivisors(int n){
cout<<n<<" = "<< 1;
for(int i = 2; i<n; i++)
if(n%i==0)
cout<<"+"<<i<<" ";
cout<<endl;
}
int main() {
int n = 1000;
cout<<"Perfect numbers up to 1000:"<<endl;
for(int i = 1; i<n; i++)
if(isPerfect(i))
displayDivisors(i);
return 0;
}
Comments
Leave a comment