Example:
Input lower limit: 1
Input upper limit: 100
Output perfect numbers: 6, 28
Required knowledge
Basic C programming, FunctionLogic to print perfect numbers using function
As we already seen in previous posts about what is Perfect numbers, how to check perfect number and how to print all perfect numbers in a given range using loop. Basically printing all perfect numbers between a given range includes following steps:- Run a loop from 1 to n (where n is the number which is to be checked as perfect number).
- If the current number of loop counter clearly divides the number then add it to a variable sum.
- After the loop terminates check whether the sum equals to original number or not. If it does then it is a perfect number otherwise not.
Program to print perfect numbers using functions
/** * C program to print all perfect numbers in given range using function */ #include <stdio.h> /* Function declarations */ int isPerfect(int num); void printPerfect(int start, int end); int main() { int start, end; /* Reads lower and upper limit to print perfect numbers */ printf("Enter lower limit to print perfect numbers: "); scanf("%d", &start); printf("Enter upper limit to print perfect numbers: "); scanf("%d", &end); printf("All perfect numbers between %d to %d are: \n", start, end); printPerfect(start, end); return 0; } /** * Checks whether the given number is perfect or not. * Returns 1 if the number is perfect otherwise 0. */ int isPerfect(int num) { int i, sum; /* Finds sum of all proper divisors */ sum = 0; for(i=1; i<num; i++) { if(num % i == 0) { sum += i; } } /* * If sum of proper positive divisors equals to given number * then the number is perfect number */ if(sum == num) return 1; else return 0; } /** * Prints all perfect numbers between given range start and end. */ void printPerfect(int start, int end) { /* Iterates from start to end */ while(start <= end) { if(isPerfect(start)) { printf("%d, ", start); } start++; } }
Output
Enter lower limit to print perfect numbers: 1
Enter upper limit to print perfect numbers: 10000
All perfect numbers between 1 to 10000 are:
6, 28, 496, 8128,
Enter upper limit to print perfect numbers: 10000
All perfect numbers between 1 to 10000 are:
6, 28, 496, 8128,
Happy coding ;)
- Function and recursion programming exercises index.
- C program to check prime, strong or armsrtong numbers using functions.
- C program to print all prime numbers in given range using functions.
- C program to print all strong numbers in given range using functions.
- C program to print all armstrong numbers in given range using functions.
- C program to find power of any number using recursion.
- C program to print all natural numbers in given range using recursion.
- C program to print all even or odd numbers in given range using recursion.
- C program to find sum of digits of any number using recursion.
- C program to find factorial of any number using recursion.