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 - 1 o n * 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 39

Notas

Devuelve una colección vacía cuando n <= 1. El valor n puede ser cualquier entero: positivo, negativo o 0.