Estructura de datos para resolver el problema del anillo de números primos (versión JAVA): tome N números naturales (1 ~ N) para que la suma de cada dos números adyacentes sea un número primo, ¡formando un anillo de números primos!
Mmmm. Piénsalo.
Esto comienza con cada número natural como punto de partida y comienza a recorrer, y los resultados se repetirán.
Por ejemplo (1,?2,?3,?4,?7,?10,?9,?8,?5,?6) (6,?1,?2,?3 ,?4,?7,?10,?9,?8,?5)importar java.util.ArrayList;
importar java.util.List;
clase pública PrimeRing {
// Encuentra el anillo de números primos del 1 al n
public PrimeRing(int n) {
List
Lista
for (int i = 1; i <= n; i++) { p>
src.add(i);
}
bucle(src, dest, n);
}
bucle vacío público (List
if (dest.size() == n) {
Inicio entero = dest.get(0 );
Entero fin = dest.get(dest.size() - 1);
if (isPrime(inicio + fin)) {
Sistema .out.println(dest);
}
retorno;
}
para (int i = 0; i < src .size(); i++) {
Elemento entero = src.remove(i);
if (dest.isEmpty()) {
destino agregar(elemento);
} else {
Entero tmp = dest.get(dest.size() - 1);
if (isPrime(tmp + elemento)) {
dest.add(elemento);
} else {
src.add(i, elemento);
continuar;
}
}
loop(src, dest, n);
src. agregar(yo, elemento)
;
dest.remove(dest.size() - 1);
}
}
// Determinar si k es Número primo
public boolean isPrime(int k) {
if (k == 2)
devuelve verdadero;
if ( k < 2 || k > 2 && k % 2 == 0)
return false;
int j = (int) Math.sqrt(k); sqrt (k) Devuelve el valor de la raíz cuadrada de k
if (j % 2 == 0)
j-- // Obtiene el número impar más grande en el rango de prueba
while (j > 2 && k % j != 0)
j -= 2;
return j < 2;
}
public static void main(String args[]) {
new PrimeRing(10);
}
} p>