Before going to the program to find Perfect Number or Not first let us understand what is a Perfect Number?
Perfect Number:
A Perfect Number is a number that is equal the sum of its positive divisors excluding the given Number.
For example,
6 is a Perfect Number, because 6 is equal to the sum of its positive divisors (ie. 1 + 2 + 3 = 6).
Program code for Perfect Number or Not in C:
#include<stdio.h> #include<conio.h> void main() { int n, i=1, sum=0; clrscr(); printf("n Enter a number: "); scanf("%d", &n); /* Loop to calculate the sum of positive divisors */ while(i<n) { if(n%i==0) { sum=sum+i; } i++; } /* if-else condition to print Perfect Number or Not */ if(sum==n) printf("n %d is a Perfect Number.",n); else printf("n %d is Not a Perfect Number.",n); getch(); }
Related: C program to find Perfect Number or Not using For Loop
Working:
- First the computer reads the positive integer value from the user.
- Then using while loop it calculates the sum of positive divisors.
- Finally if-else condition is used to print the number is perfect number or not .
Step by Step working of the above Program Code:
For Perfect Number:
- Let us assume that a user enters the positive integer value as 6.
- It assigns the value of sum=0 and n=6.
- It assigns the value of i=1 and the loop continues till the condition of the while loop is true.
3.1. i<n (1<6) while loop condition is true
n%i==0 (6%1==0) if condition is true
sum=sum+i (sum=0+1) So, sum=1
i++ (i=1+1) So i=2
3.2. i<n (2<6) while loop condition is true
n%i==0 (6%2==0) if condition is true
sum=sum+i (sum=1+2) So, sum=3
i++ (i=2+1) So i=3
3.3. i<n (3<6) while loop condition is true
n%i==0 (6%3==0) if condition is true
sum=sum+i (sum=3+3) So, sum=6
i++ (i=3+1) So i=4
3.4. i<n (4<6) while loop condition is true
n%i==0 (6%4==0) if condition is false
i++ (i=4+1) So i=5
3.5. i<n (5<6) while loop condition is true
n%i==0 (6%5==0) if condition is false
i++ (i=5+1) So i=6
3.6. i<n (6<6) while loop condition is false
It comes out of the while loop.
- sum==n (6==6) if condition is true
So it prints 6 is a Perfect Number.
- Thus program execution is completed.
For Not a Perfect Number:
- Let us assume that a user enters the positive integer value as 4.
- It assigns the value of sum=0 and n=4.
- It assigns the value of i=1 and the loop continues till the condition of the while loop is true.
3.1. i<n (1<4) while loop condition is true
n%i==0 (4%1==0) if condition is true
sum=sum+i (sum=0+1) So, sum=1
i++ (i=1+1) So i=2
3.2. i<n (2<4) while loop condition is true
n%i==0 (4%2==0) if condition is true
sum=sum+i (sum=1+2) So, sum=3
i++ (i=2+1) So i=3
3.3. i<n (3<4) while loop condition is true
n%i==0 (4%3==0) if condition is false
3.4. i<n (4<4) while loop condition is false
It comes out of the while loop.
- sum==n (3==4) if condition is false
So it goes to else part and prints 4 is Not a Perfect Number.
- Thus program execution is completed.