He escrito un código (en python) que produce un número y comprueba si el número es primo o no, si es primo lo imprimirá. Pero mi código sigue produciendo números e imprimiéndolos, ¿puede dar su opinión sobre lo que está mal en mi enfoque?
val = 10
for i in range (2, (val+1)//2):
while (val+1) % i != 0 :
print(val + 1)
val = val *10
Quiero verificar si algún número (que es múltiplo de diez agregado por uno) se considera un número primo o no.
2 respuestas
Ok, esto estaba extrañamente redactado, pero entendí lo esencial, creo, primero necesitamos una función para detectar números primos
import math
def is_prime(n):
if n == 2:
return True
if n % 2 == 0 or n <= 1:
return False
sqr = int(math.sqrt(n)) + 1
for divisor in range(3, sqr, 2):
if n % divisor == 0:
return False
return True
Entonces, si entendí bien su idea, desea probar si un número es primo después de esta función x2 = x1 * 10 + 1
Entonces eso nos da esto
val = 10
while val <10000:
if is_prime(val + 1) == False:
print(val+1)
break
val = val * 10
Lo cual no durará para siempre, y en realidad se rompe en el tercer ciclo en 1000 (1001).
Un primo es un número x que solo es divisible por x y 1. Por lo tanto, debe comenzar a recorrer todos los números entre 2 y x-1 y ver si el módulo es siempre igual a cero.
val = 10
for i in range (2, val-1):
if val%i == 0:
print(i)
break
Puede dejar el descanso si desea ver todos los números que su variable es divisible.
Preguntas relacionadas
Nuevas preguntas
python-3.x
Para preguntas sobre la programación de Python que son específicas de la versión 3+ del lenguaje. Use la etiqueta [python] más genérica en todas las preguntas de Python, y solo agregue esta si su pregunta es específica de la versión. Utilice las etiquetas [python-2.x] para las preguntas de Python 2.