Almost Perfect Number

Given a number n, check it is the Almost Perfect number or not. Almost perfect number is a natural number whose sum of all divisors including 1 and the number itself is equal to 2n – 1.

Example :

Input: n = 16
Output: Yes
Explanation: sum of divisors = 1 + 2 + 4 + 8 + 16 = 31 = 2n - 1

Input: n = 9
Output: No
Explanation: sum of divisors = 1 + 3 + 9 ≠ 2n - 1

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to check if a number
// is almost perfect.
#include <bits/stdc++.h>
using namespace std;
  
bool isAlmostperfect(int n)
{
    int divisors = 0;
  
    for (int i = 1; i <= n; i++) {
  
        // store sum of divisors of n
        if (n % i == 0)
            divisors += i;
    }
  
    // sum of divisors = 2*n - 1
    if (divisors == 2 * n - 1)
        return true;
  
    return false;
}
  
int main()
{
    int n = 16;
    if (isAlmostperfect(n))
        cout << "Yes";
    else
        cout << "No";
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to check if a 
// number is almost perfect.
  
class GFG {
      
// Function to check number is 
// almost perfect or not
static boolean isAlmostperfect(int n)
{
    int divisors = 0;
  
    for (int i = 1; i <= n; i++)
    {
  
        // store sum of divisors of n
        if (n % i == 0)
            divisors += i;
    }
  
    // sum of divisors = 2*n - 1
    if (divisors == 2 * n - 1)
        return true;
  
    return false;
}
  
// Driver Code
public static void main(String[] args)
{
    int n = 16;
    if (isAlmostperfect(n))
        System.out.println("Yes");
    else
        System.out.println("No");
}
}
  
// This code is contributed by
// Smitha Dinesh Semwal.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to check if a number
# is almost perfect.
def isAlmostperfect(n):
  
    divisors = 0
    for i in range(1, n+1):
  
        # store sum of divisors of n
        if (n % i == 0):
            divisors = divisors + i
  
    # sum of divisors = 2*n - 1
    if (divisors == 2 * n - 1):
        return True
    else:
        return False
  
# Driver code
n = 16
if (isAlmostperfect(n)):
    print ("Yes")
else:
    print ("No")
  
# This code is contributed by
# Manish Shaw (manishshaw1)

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to check if a 
// number is almost perfect.
using System;
  
class GFG
{
      
    // Function to check number is 
    // almost perfect or not
    static bool isAlmostperfect(int n)
    {
        int divisors = 0;
      
        for (int i = 1; i <= n; i++)
        {
      
            // store sum of divisors of n
            if (n % i == 0)
                divisors += i;
        }
      
        // sum of divisors = 2 * n - 1
        if (divisors == 2 * n - 1)
            return true;
      
        return false;
    }
  
    // Driver Code
    static public void Main ()
    {
        int n = 16;
          
        if (isAlmostperfect(n))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
  
// This code is contributed by Ajit.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to check if a 
// number is almost perfect.
  
// function to check 
// almost perfect
function isAlmostperfect($n)
{
    $divisors = 0;
  
    for ($i = 1; $i <= $n; $i++)
    {
  
        // store sum of 
        // divisors of n
        if ($n % $i == 0)
            $divisors += $i;
    }
  
    // sum of divisors = 2*n - 1
    if ($divisors == 2 * $n - 1)
        return true;
  
    return false;
}
  
// Driver code
$n = 16;
if (isAlmostperfect($n))
    echo("Yes");
else
    echo("No");
  
// This code is contributed by Ajit.
?>

chevron_right


Output:



Yes

The almost perfect numbers are found to be of the form 2^k(k = 0, 1, 2, 3, 4, ..). However it is not proved.



My Personal Notes arrow_drop_up

Recommended Posts:



    Article Tags :
    Practice Tags :


    Be the First to upvote.


    Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.