Advertisement
Chanchoveloz

Números perfectos

Sep 8th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. // Programa para determinar si un numero entrado por el teclado es perfecto
  2. // Un número perfecto es un número natural que es igual a la suma de sus divisores propios positivos.
  3. // lista: 6,28,496,8128,33550336,8589869056,137438691328
  4.  
  5. import java.util.Scanner;
  6. public class NumPerf {
  7.  
  8. public static void main(String[] args) {
  9. // TODO Auto-generated method stub
  10.  
  11. Scanner leer = new Scanner (System.in);
  12. double num, resto, suma;
  13. boolean paso=true;
  14.  
  15. System.out.print("Entre un numero entero para determinar si es perfecto: ");
  16. num= leer.nextDouble();
  17. suma=0;
  18.  
  19. // el siguiente ciclo determina el resto de dividir el numero entrado por todos los numeros enteros menores que
  20. // el numero, si el resto da cero, es decir si el numero encontrado es un divisor, lo va acumulando en la variable
  21. // suma. Luego compara si suma es igual al numero entrado, si es igual es perfecto, en otro caso no lo es
  22.  
  23. for (int i=(int)(num-1); i >1; i--){
  24.  
  25. resto=num%i;
  26.  
  27. if (resto==0){
  28. suma=suma+i;
  29. // el or siguiente es un truco para evitar el error de desborde que se da en el 5to numero perfecto
  30. // no dar bola a ese truco
  31.  
  32. if ((suma+1) == num|| (suma*2+2)==num){
  33. System.out.println("El numero "+num+" es perfecto");
  34. paso=false;
  35. }
  36. }
  37. }
  38. if (paso){
  39. System.out.println();
  40. System.out.println("El numero "+num+" no es perfecto");
  41. // System.out.println("suma = "+ suma*2);
  42. }
  43. }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement