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 to 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, sum=0; clrscr(); printf(" Enter a number: "); scanf("%d", &n); /* Loop to calculate the value of sum of positive divisors */ for(i=1;i<n;i++) { if(n%i==0) { sum=sum+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 While Loop
Working:
- First, the computer reads the positive integer value from the user.
- Then using For loop it calculates the sum of positive divisors.
- Finally, the if-else condition is used to print whether the number is a 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 for loop is true.
3.1. i<n (1<6) for 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) for 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) for 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) for 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) for 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) for loop condition is false
It comes out of the for 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 for loop is true.
3.1. i<n (1<4) for 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) for 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) for loop condition is true
n%i==0 (4%3==0) if condition is false
i++ (i=3+1) So i=4
3.4. i<n (4<4) for loop condition is false
It comes out of the for loop.
- sum==n (3==4) if condition is false
So it goes to the else part and prints 4 is Not a Perfect Number.
- Thus program execution is completed.