G2A Many GEOs
SHARE
TWEET

Untitled

a guest Apr 7th, 2020 176 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  *
  3.  * @author Mrivem
  4.  */
  5. public class NumerosPerfectos {
  6.     public static void main(String[] a){
  7.         //perfectosHasta(10000); // ejercicio 1
  8.         perfectosHasta(Integer.MAX_VALUE); // ejercicio 2 se me queda pegado :/
  9.        
  10.         // ejercicio 5
  11.         //esPrimoDesdeHasta(8321, 9637);
  12.        
  13.     }
  14.    
  15.     public static void perfectosHasta(int limite){
  16.         perfectosDesdeHasta(1, limite);
  17.     }
  18.    
  19.     public static void perfectosDesdeHasta(int desde, int hasta){
  20.         for (int i = desde; i < hasta; i++) {
  21.             if(esPerfecto(i)){
  22.                 System.out.format("%s es perfecto\n", i);
  23.             } else {
  24.                 //if(i > 10000)
  25.                 //    System.out.print(".");
  26.             }
  27.         }
  28.     }
  29.    
  30.     public static boolean esPerfecto(int num){
  31.         // Un numero perfecto no puede ser impar
  32.         if (num % 2 == 1) {
  33.             return false;
  34.         }
  35.  
  36.         long resultado = 1; // el divisor trivial
  37.         long i = 2;
  38.         // porque i <= sqrt(num) ? asi revisas 2*3 y 3*2 en una sola pasada
  39.         while (i * i <= num) {
  40.             if (num % i == 0) {
  41.                 resultado += i;
  42.                 resultado += num / i;
  43.             }
  44.             i++;
  45.         }
  46.         if (i * i == num) { // si el numero es un cuadrado perfecto lo contaste dos veces, elimina una
  47.             resultado -= i;
  48.         }
  49.        
  50.         // retorna si la suma es igual al numero
  51.         return resultado == num;
  52.     }
  53.    
  54.     public static void esPrimoDesdeHasta(int desde, int hasta){
  55.         int contador = 0;
  56.         for(int i = desde; i <= hasta; i++){
  57.             if(esPrimo(i)){
  58.                 System.out.format("%s es primo\n", i);
  59.                 contador++;
  60.             }
  61.         }
  62.         System.out.format("Se encontraron %s numeros primos en [%s; %s]\n",contador, desde, hasta);
  63.     }
  64.    
  65.     public static boolean esPrimo(int num){
  66.         // 1 no es primo y meto los negativos en el mismo saco
  67.         if(num <= 1) return false;
  68.        
  69.         // Pruebo dividir el numero desde 2 hasta num - 1
  70.         for(int i = 2; i < num; i++){
  71.             // Si la division es entera no es primo
  72.             if(num % i == 0){
  73.                 return false;
  74.             }
  75.         }
  76.         // Si no paso nĂ¡ arriba, es primo
  77.         return true;
  78.     }
  79. }
RAW Paste Data
Ledger Nano X - The secure hardware wallet
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top