¿Cómo escribir un anillo de números primos en Python?
Código:
n = int(input("Ingrese el número máximo n:"))
lists = [[1]]#Prime múltiple números Anillo
numero excedente = lista(rango(1,n+1)) #El número restante
def sumisprime(x, y):
#x y ¿Es la suma de y un número primo?
isprime=True#¿Es un número primo?
s = x + y#sum
para i en el rango( 2, int( s**0.5)+1):
#Método de determinación de números primos: si ningún número entero desde 2 hasta la raíz cuadrada del número es divisible por el número, entonces el número es primo número
si s%i == 0: #se puede dividir uniformemente
isprime = False#no es un número primo
romper#salir del ciclo
return isprime#after return Si es un número primo (sí: verdadero, no: falso)
changelast=lambda listx,addvalue:listx[0:-1]+[ addvalue]#Cambiar la función al final de la lista
while len(lists[0] if len(lists) else [0]*n) < n:#Cuando la longitud del anillo principal es menor que el número máximo
n2 = len(lists[0]) #n2 es Determinar, la longitud máxima teórica de la lista actual
para listn en listas:#Recorrer cada posible anillo de números primos
excedentenum=lista(rango(1,n+1))#Valor predeterminado
para j en listan:#Recorre el número de la lista actual
excedenum.remove(j)#Eliminar este número de los números restantes
para i en excedenum :#Recorre los números restantes
if sumisprime(listn[n2-1] , i):#La suma del último número y es un número primo
if len(listn) == n2:#Si esta lista aún no se ha agregado
listn .append(i)#Agregar a esta lista
else:#Si la lista ya ha sido agregada
p>
lista = changelast(listn, i)#La lista para agregar
si la lista no está en listas:#Si no está en esta lista
listas.append(lista) #Agregar a otra lista
para listn in list.copy():#Evitar el impacto de la eliminación de listas
if len(listn) != n2+1:#Si la longitud no cumplió con las expectativas (+1)
lists.remove(listn)#Eliminar la lista (cancelar esta posibilidad)
if len(lists[0]) == n:#Ya cumples las condiciones
para lis
tn en listas:#Recorre la lista, comprueba el principio y el final
if sumisprime(listn[-1], listn[0]):#Si la suma del principio y el final es igual a un primo número
print(listn) #El ciclo está establecido, imprímalo
break#Finalizar el ciclo
Nota: Después de la prueba, no hay problema, n=12 se puede calcular rápidamente (pero le aconsejo que no lo escriba), si solo necesita un anillo de número primo, puede ajustar la sangría de ruptura a impresión paralela (listan).