¿Cuál es el mejor algoritmo para verificar si un número es antiprime?

La definición de antiprime es la siguiente: un número (entero) que tiene un mayor número de divisores que cualquier número menor que él. El primer antiprime es 1: tiene un divisor y ningún número entero menor que él. 2 es el segundo antiprime: tiene dos divisores (en sí y 1), que es más que el número 1. 3 no es antiprime porque tiene dos divisores, vinculados con los dos divisores de 2; para ser antiprime necesitaba vencer al número de divisores de todos los números menos que a sí mismo y no lo hizo. Esto hace 4 un anitprime porque tiene 3 divisores; uno más de 3 o 2 tenía. Los primeros antiprimes son: 1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260 (es divertido revisar algunos de estos a mano).

Para verificar si el número dado es antiprime, encuentre los factores de los enteros menores que el número dado. Si el número de factores de esos enteros es menor que el número de factores del número dado , el número dado es un número antiprime.

Escribiré un código JAVA:

Primes de clase pública // nombre de clase
{
public static int NumberOfFactors (int a) // cuenta el número de factores
{
int n = 0; //No. de factores
para (int i = 1; i <= a; i ++)
{
si (a% i == 0)
{
n = n + 1;
}
más
Hacer continuación;
}
volver n;
}
public static void main (String args []) // función principal
{
int k; // número para verificar si hay antiprime
int l = 0; //mostrador
si (k! = 1)
{
para (int i = 1; i <k; i ++)
{
if (NumberOfFactors (k)> NumberOfFactors (ki)) // No. de factores de k debe ser menor que el número de factores del número más bajo
{
l = l + 1;
}
más
{
System.out.println (k + “no es un antiprime”);
rotura;
}
}
si (l == k-1)
System.out.println (k + “es un antiprime”);
}
más
System.out.println (k + “es el primer antiprime”); // si k es igual a 1
}
} //fin de clases

# Nota: Asigne un valor a k e intente ejecutar el programa. Tendrás una idea.

Aquí está el código y la salida: (Ya he asignado el valor de la variable k como 5040 en el siguiente código)

Salida:

Por antiprime, supongo que se refiere a un número altamente compuesto, hay varias pruebas que puede hacer primero para asegurarse de que cumpla con algunas condiciones básicas. Una prueba un poco avanzada es verificar si sus factores primos son primos primos. No puede tener los factores 2, 3 y 7 sin tener 5. Porque entonces podrías reemplazar 7 con 5 y obtener un número menor con el mismo número de factores. Una versión más sofisticada basada en este concepto de Kiran S. Kedlaya se puede encontrar en línea. http://web.archive.org/web/19980