Hola a todos, hoy os voy a explicar como podemos obtener todos los divisores de un número en Java.
A veces puede ser necesario que sepamos saber todos los divisores de un número.
Antes de empezar, recordar que ya vimos como podemos contar el número de divisores en Java que nos va a ser de ayuda.
Lo primero que vamos a hacer es pedir un número , recomiendo que en este caso nos guardemos el número original y el número absoluto, ya que podemos hacer la diferencia entre positivos y negativos.
También vamos a recuperar la función de cuentaDivisores del anterior post visto.
import java.util.Scanner; public class RellenarDivisores { public static void main(String[] args) { Scanner sn = new Scanner(System.in); System.out.println("Introduce un número"); int num = sn.nextInt(); int numPositive = Math.abs(num); } public static int cuentaDivisores(int numero) { int contador = 0; // Recorremos de 1 al número (incluido el propio numero) for (int i = 1; i <= Math.abs(numero); i++) { // si es divisible entre el número original, sumamos el contador if (numero % i == 0) { contador++; } } return contador; } }
Crearemos un un array donde guardaremos los divisores, la longitud del mismo, lo sacaremos de la función cuentaDivisores.
import java.util.Scanner; public class RellenarDivisores { public static void main(String[] args) { Scanner sn = new Scanner(System.in); System.out.println("Introduce un número"); int num = sn.nextInt(); int numPositive = Math.abs(num); int numDivisores = cuentaDivisores(num); int divisores[] = new int[numDivisores]; } public static int cuentaDivisores(int numero) { int contador = 0; // Recorremos de 1 al número (incluido el propio numero) for (int i = 1; i <= Math.abs(numero); i++) { // si es divisible entre el número original, sumamos el contador if (numero % i == 0) { contador++; } } return contador; } }
Ahora vamos con lo más importante, vamos a recorrer de 1 al numero dado comprobando si es divisor o no, si lo es, lo meteremos en el array.
También debemos tener en cuenta que si el número original es negativo, el divisor lo meteremos como negativo.
Al final, recorremos los divisores para mostrar los divisores.
import java.util.Scanner; public class RellenarDivisores { public static void main(String[] args) { Scanner sn = new Scanner(System.in); System.out.println("Introduce un número"); int num = sn.nextInt(); int numPositive = Math.abs(num); int numDivisores = cuentaDivisores(num); int divisores[] = new int[numDivisores]; for (int i = 1, j = 0; i <= numPositive && j < divisores.length; i++) { if (numPositive % i == 0) { if(num < 0){ divisores[j] = -i; }else{ divisores[j] = i; } j++; } } for (int i = 0; i < divisores.length; i++) { System.out.println(divisores[i]); } } public static int cuentaDivisores(int numero) { int contador = 0; // Recorremos de 1 al número (incluido el propio numero) for (int i = 1; i <= Math.abs(numero); i++) { // si es divisible entre el número original, sumamos el contador if (numero % i == 0) { contador++; } } return contador; } }
Veamos un ejemplo práctico:
Os lo dejo en forma de función:
public static int[] obtenerDivisores(int numero) { int numPositive = Math.abs(numero); int numDivisores = cuentaDivisores(numero); int divisores[] = new int[numDivisores]; for (int i = 1, j = 0; i <= numPositive && j < divisores.length; i++) { if (numPositive % i == 0) { if(numero < 0){ divisores[j] = -i; }else{ divisores[j] = i; } j++; } } return divisores; } public static int cuentaDivisores(int numero) { int contador = 0; // Recorremos de 1 al número (incluido el propio numero) for (int i = 1; i <= Math.abs(numero); i++) { // si es divisible entre el número original, sumamos el contador if (numero % i == 0) { contador++; } } return contador; }
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudar.
Deja una respuesta