Número Quase Perfeito
Dado um número n, verifique se é o número Quase Perfeito ou não. O número quase perfeito é um número natural cuja soma de todos os divisores incluindo 1 e o próprio número é igual a 2n - 1 .
Exemplo :
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
// 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 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.
# 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# 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 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.
?>
<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>
Saída:
sim
Os números quase perfeitos têm a forma 2 ^ k (k = 0, 1, 2, 3, 4, ..). No entanto, não está provado.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva