Antidivisores de un número
Los antidivisores son números que no dividen un número dado por el mayor margen posible y se pueden encontrar siguiendo un conjunto sencillo de reglas:
- Se comprueba cada número mayor que 1 y menor que
n. - Cada número comprobado no debe ser divisor de
n. - Si el número comprobado es impar y es divisor de
n * 2 - 1on * 2 + 1, es un antidivisor. - Si el número comprobado es par y es divisor de
n * 2, es un antidivisor.
Dado un entero n, implementa un método que devuelva un arreglo con los antidivisores de n ordenados de forma ascendente.
Ejemplos
Program.antiDivisors(10) ➞ new int[]{3, 4, 7}
// 3 es divisor de 21 (10 * 2 + 1)
// 4 es divisor de 20 (10 * 2)
// 7 es divisor de 21
Program.antiDivisors(12) ➞ new int[]{5, 8}
// 5 es divisor de 25 (12 * 2 + 1)
// 8 es divisor de 24 (12 * 2)
Program.antiDivisors(20) ➞ new int[]{3, 8, 13}
// 3 es divisor de 39 (20 * 2 - 1)
// 8 es divisor de 40 (20 * 2)
// 13 es divisor de 39Notas
Devuelve una colección vacía cuando n <= 1. El valor n puede ser cualquier entero: positivo, negativo o 0.