Red de conocimiento informático - Material del sitio web - ¿Cómo escribir un anillo de números primos en Python?

¿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).