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.