WallHero

Criba de eratóstenes

Sep 7th, 2020
1,112
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. public class Cribe {
  5.     static int maxN = (int) 1e7;
  6.     static boolean cribe[] = new boolean[maxN];
  7.     static Scanner scanner = new Scanner(System.in);
  8.    
  9.     static void initCribe()
  10.     {
  11.         Arrays.fill(cribe, true);
  12.         cribe[0] = (cribe[1] = false);
  13.         for(int i = 2; i*i < maxN; i++)
  14.         {
  15.             if(cribe[i])
  16.             {
  17.                 for(int j = i*i; j < maxN; j+=i)
  18.                 {
  19.                     cribe[j] = false;
  20.                 }
  21.             }
  22.         }
  23.        
  24.     }
  25.    
  26.     static int forceReadPositiveInt(String message)
  27.     {
  28.         int n = 0;
  29.         while(true)
  30.         {
  31.             try
  32.             {
  33.                 System.out.println(message);
  34.                 n = Integer.parseInt(scanner.next());
  35.                 if(n > -1 ) return n;
  36.                 System.out.println("El número a testear debe ser mayor o igual a 0:.");
  37.                 continue;
  38.             }
  39.             catch(Exception ex)
  40.             {
  41.                 System.out.println("Se introdujo un número inválido, reintente.");
  42.             }  
  43.         }
  44.     }  
  45.    
  46.     public static void main(String[] args) {
  47.         initCribe();
  48.         while(true)
  49.         {
  50.             int x = forceReadPositiveInt("Ingrese número a testear:");
  51.             System.out.println(cribe[x] ? "Es primo" : "No es primo");
  52.             System.out.println("¿Continuará con los tests? (S/N)");
  53.             if(scanner.next().charAt(0) == 'N') break;
  54.         }
  55.  
  56.     }
  57.  
  58. }
  59.  
RAW Paste Data