Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.PriorityQueue;
- import java.util.Scanner;
- public class PuntoTres {
- static Scanner scanner = new Scanner(System.in);
- static long forceReadPositiveLong()
- {
- long n = 0;
- while(true)
- {
- try
- {
- System.out.println("Introduzca el valor de N:");
- n = Long.parseLong(scanner.next());
- if(n <= 0 )
- {
- System.out.println("El valor de N debe ser positivo.");
- continue;
- }
- return n;
- }
- catch(Exception ex)
- {
- System.out.println("Se introdujo un número inválido, reintente.");
- }
- }
- }
- static void showDivisorsData(long n)
- {
- float sumDiv = 0;
- PriorityQueue<Long> divisors = new PriorityQueue<Long>();
- for(long i = 1; i*i <= n; i++)
- {
- if(n%i == 0)
- {
- divisors.add(i);
- sumDiv+= i;
- if(i*i == n) continue;
- divisors.add(n/i);
- sumDiv+=(n/i);
- }
- }
- System.out.println("Cantidad de divisores: "+ divisors.size());
- System.out.println("Promedio de divisores: "+ sumDiv/divisors.size());
- System.out.print("Divisores: [");
- while(!divisors.isEmpty())
- {
- System.out.print(divisors.remove() + ((divisors.isEmpty() ? "]\n" : ",")));
- }
- }
- public static void main(String[] args) {
- try
- {
- long n = forceReadPositiveLong();
- showDivisorsData(n);
- }
- catch (Exception e) {
- System.out.println("Error al realizar los cálculos, probablemente se necesite ¡BigInteger! para este número.");
- }
- }
- }
Add Comment
Please, Sign In to add comment