Dado un número n, comprobar si es el número Casi Perfecto o no. Un número casi perfecto es un número natural cuya suma de todos los divisores, incluido el 1 y el propio número, es igual a 2n – 1 .
Ejemplo :
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++
// 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"; }
Java
// 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.
Python3
# 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)
C#
// 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.
PHP
<?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. ?>
Javascript
<script> // Javascript program to check if a number // is almost perfect. function isAlmostperfect( n) { let divisors = 0; for (let 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 let n = 16; if (isAlmostperfect(n)) document.write("Yes"); else document.write("No"); </script>
Producción:
Yes
Se encuentra que los números casi perfectos son de la forma 2^k(k = 0, 1, 2, 3, 4, ..). Sin embargo, no está probado.
Publicación traducida automáticamente
Artículo escrito por jaideeppyne1997 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA