Question #345500

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.

Expert's answer

#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;
}
LATEST TUTORIALS
APPROVED BY CLIENTS