Question #346090

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>
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";
		}
	}
}

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

LATEST TUTORIALS
APPROVED BY CLIENTS