WallHero

TP0EJ03 Grupo 2.2

Aug 24th, 2020 (edited)
153
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.PriorityQueue;
  2. import java.util.Scanner;
  3.  
  4. public class PuntoTres {
  5.  
  6.    
  7.     static Scanner scanner = new Scanner(System.in);
  8.    
  9.     static long forceReadPositiveLong()
  10.     {
  11.         long n = 0;
  12.         while(true)
  13.         {
  14.             try
  15.             {
  16.                 System.out.println("Introduzca el valor de N:");
  17.                 n = Long.parseLong(scanner.next());
  18.                 if(n <= 0 )
  19.                 {
  20.                     System.out.println("El valor de N debe ser positivo.");
  21.                     continue;
  22.                 }
  23.                 return n;
  24.             }
  25.             catch(Exception ex)
  26.             {
  27.                 System.out.println("Se introdujo un número inválido, reintente.");
  28.             }  
  29.         }
  30.     }  
  31.    
  32.     static void showDivisorsData(long n)
  33.     {
  34.         float sumDiv = 0;
  35.        
  36.         PriorityQueue<Long> divisors = new PriorityQueue<Long>();
  37.  
  38.         for(long i = 1; i*i <= n; i++)
  39.         {
  40.             if(n%i == 0)
  41.             {
  42.                 divisors.add(i);
  43.                 sumDiv+= i;
  44.                 if(i*i == n) continue;
  45.                 divisors.add(n/i);
  46.                 sumDiv+=(n/i);
  47.             }
  48.         }
  49.         System.out.println("Cantidad de divisores: "+ divisors.size());
  50.         System.out.println("Promedio de divisores: "+ sumDiv/divisors.size());
  51.         System.out.print("Divisores: [");
  52.         while(!divisors.isEmpty())
  53.         {
  54.             System.out.print(divisors.remove() + ((divisors.isEmpty() ? "]\n" : ",")));
  55.         }
  56.     }
  57.    
  58.     public static void main(String[] args) {
  59.         try
  60.         {  
  61.             long n = forceReadPositiveLong();
  62.             showDivisorsData(n);
  63.            
  64.         }
  65.         catch (Exception e) {
  66.             System.out.println("Error al realizar los cálculos, probablemente se necesite ¡BigInteger! para este número.");
  67.         }
  68.     }
  69.  
  70. }
  71.  
RAW Paste Data