7. Um número é dito perfeito quando ele é igual a soma de seus fatores. Por exemplo, os fatores de 6 são 1, 2 e 3 (ou seja, podemos dividir 6 por 1, por 2 e por 3) e 6=1+2+3, logo 6 é um número perfeito. Escreva uma função que recebe um inteiro e dizer se é perfeito ou não. Em outra função, peça um inteiro n e mostre todos os números perfeitos até n.
Como detectar números perfeitos
Vamos receber um número $n do usuário.
Dentro da função soma(), vamos ter uma variável chamada $divisores, que inicialmente é 0, ela vai receber a soma de todos os divisores.
Depois, com um laço, vamos dividir o número do usuário por 1, por 2, por 3...até por $n-1
Cada vez que for divisor, somamos esse números na $divisores.
Ao final da função, retornamos $divisores, que é a soma dos divisores.
Fora da função, verificamos se $n é igual ao retorno da função, se for, o número é dito perfeito:
<html> <head> <title>Apostila PHP Progressivo</title> </head> <body> <form action=ae method="get"> Numero<input type="number" name="numb" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $n = $_GET['numb']; if($n == soma($n)) echo "É perfeito"; else echo "Não é perfeito"; function soma($n){ $divisores=0; for($count=1 ; $count<$n ; $count++) if($n % $count==0) $divisores += $count; return $divisores; } ?> </body> </html>
Teste com alguns números perfeitos:
6, 28, 496 e 8.128