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>
int main()
{
long* divisors; int i; int j; int n = 0; long sum = 0;
divisors = new long[10000];
for (i = 2; i < 1000; i++)
{
n = 0;
*(divisors + n) = 1;
sum = *(divisors + n);
n++;
for (j = 2; j < 1000; j++)
if (i % j == 0)
{
*(divisors + n) = j;
sum = sum + j;
n++;
}
if (i * 2 == sum)
{
std::cout << "perfect number: " << i << "\n";
std::cout << "divisors: ";
for (j = 0; j < n - 1; j++)
std::cout << *(divisors + j) << " ";
std::cout << "\n";
}
}
}
Comments
Leave a comment