# Perfect Number Code in Python

## Check Whether or Not the Number is a Perfect Number in Python

Given an integer input as a number, the objective is to check whether or not a number is a Perfect Number in Python Language. Therefore, we write a program to Check Whether or Not the Number is a Perfect Number in Python Language.

```Example
Input : 28
Divisors : [1, 2, 4, 7, 14]
Sum = 1 + 2 + 4 + 7 + 14 = 28
Output : It's a Perfect Number
```  ## Check whether or not the number is Perfect Number in Python

• Method 1: Using Simple Iteration I
• Method 2: Using Simple Iteration II

We’ll discuss the above-mentioned methods in detail in the upcoming sections.

### Method 1: For Loop Iteration between [1, num]

For number num

• Initialise sum = 0
• Run an in ‘i’ iteration b/w [1, num]
• For any i satisfying (num % i == 0)
• If sum == num, its a perfect number
• Add to the sum

Let’s implement the above mentioned logic in Python Language.

### Python Code

Run
```n = 28
sum = 0

for i in range(1, n):
if n % i == 0:
sum = sum + i

if sum == n:
print("The number is a Perfect number")
else:
print("The number is not a Perfect number")
```

### Output

`The number is a Perfect number`

### Method 2: While Loop Iteration between [1, num]

For number num

• Initialise sum = 0
• Run an in ‘i’ iteration b/w [1, num]
• For any i satisfying (num % i == 0)
• If sum == num, its a perfect number
• Add to the sum
Run
```num = 28
sum = 0

i = 1
while i < num:
if num % i == 0:
sum += i

i += 1

if sum == num:
print("The number is a Perfect number")
else:
print("The number is not a Perfect number")
```

### Output

`The number is a Perfect number`

### Method 3: Iteration between [1, num/2+1]

This method uses fact that all the divisors of the number can be found in the range (1, num/2)

Example –

Divisors of 28 = {1, 2, 4, 7, 14}

Run
```num = 28
sum = 0

for i in range(1, num//2 + 1):
if num % i == 0:
sum = sum + i

if sum == num:
print("The number is a Perfect number")
else:
print("The number is not a Perfect number")
```

### Output

`The number is a Perfect number`

### Method 4: Using recursion

We use recursion to find if the number is perfect or not.

Run
```sum_n = 0

def getSumDivisors(num, i):
global sum_n
# since, all factors can be found will num/2
# we will only check in this range
if i <= num // 2:

if num % i == 0:
sum_n = sum_n + i

i += 1

# recursively call isPerfect
getSumDivisors(num, i)

# returns the sum
# when i becomes > num/2
return sum_n

num = 28

if getSumDivisors(num, 1) == num:
print("The number is a Perfect number")
else:
print("The number is not a Perfect number")
```

### Output

`The number is a Perfect number`

### Method 5: Factors come in pairs

This method uses observations that all factors come in pairs.

### Python Code

Run
```n = 28
sump = 0

for i in range(1, int(pow(n, 0.5))):
if n % i == 0:

# For n : (1, n) will always be pair of divisor
# acc to def., we must ignore adding num itself as divisor
# when calculating for perfect number
if i == 1:
sump += i

# Example For 100 (10,10)  will be one pair
# But, we should add value to the sum just once
elif i == n / i:
sump += i

# add both pairs as divisors
# For any divisor i, n/i will also be a divisor
else:
sump += i + n / i

if sump == n:
print("The number is a Perfect number")
else:
print("The number is not a Perfect number")

# Time complexity: O(sqrt(N))
# Space complexity: O(1)
```

### Output

`The number is a Perfect number`

### 2 comments on “Perfect Number Code in Python”

• Ahamed

n1 = int(input())
k = 0
for i in range(1, n1):
if n1%i == 0:
k = k + i
if k == n1:
print(‘Perfect number {}’.format(n1))
else:
print(‘Not perfect number{}’.format(n1)) 0
• L_50_Vegi.Deekshita

a=int(input())
c=[]
s=0
for i in range(1,a):
if(a%i==0):
c.append(i)
for i in c:
s+=i
if(s==a):
print(“perect”)
else:
print(“not perfect”) 0