c program Perfect Numbers A positive integer is said to be a perfect number if i
ID: 3789022 • Letter: C
Question
c program
Perfect Numbers A positive integer is said to be a perfect number if it equals the sum of its positive divisors (excluding the number itself). As an example, 6 is a perfect number because its divisors, 1, 2, and 3 sum up to 6. The first four perfect numbers are 6, 28, 496, 8128. Write a C program that asks the; user to enter a number and checks if the number is perfect. Your program should run interactively until the; user quits. Try to minimize the; pre>gram execution lime; by using the least number of iterations for finding the divisors of the user's input. Record and report the number of iterations executed for checking if a number is perfect. Sample Code Execution: Red text indicates information entered by the user Enter a perfect number:1 Number 1 is not perfect Number of iterations:0 Do you want to continue (y/n)?y Enter a perfect number:6 Number 6 is perfect Number of iterations:3 Do you want to continue (y/n)?y Enter a perfect number:67 Number 67 is not perfect Number of iterations:33 Do you want to continue (y/n)?y Enter a perfect number:496 Number 496 is perfect Number of iterations:248 Do you want to continue (y/n)?n GoodbyeExplanation / Answer
#include<stdio.h>
int checkNumberIsPerfect(int givenNumber);
int getNumber(int enableCall);
int main()
{
int inputNumber = getNumber(0);
checkNumberIsPerfect(inputNumber);
return 0;
}
//-- To get input from user
int getNumber(int enableCall)
{
int userInput;
printf("Enter a perfect number: ");
scanf("%d",&userInput);
if (enableCall)
{
checkNumberIsPerfect(userInput); //-- Call funtion to check number is perfect or not
}
else
{
return userInput;
}
}
//-- Check number is perfect
int checkNumberIsPerfect(int givenNumber)
{
int initNumber = 1, sum = 0, iteration = 0;char options;
while(initNumber<givenNumber)
{
if(givenNumber%initNumber==0)
{
sum=sum+initNumber;
iteration++;
}
initNumber++;
}
if(sum==givenNumber)
printf("Number %d is perfect", initNumber);
else
printf("Number %d is not a perfect", initNumber);
printf(" Number of iterations:%d", iteration);
char answer;
printf(" Do you want to continue(Y/N)?: ");
scanf(" %c", &answer);
if (answer == 'Y')
{
getNumber(1);
}
else
printf(" Goodbye");
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.