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.

-1
Anttarm 3 ene. 2020 a las 22:22

2 respuestas

La mejor respuesta

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

0
Bruno 3 ene. 2020 a las 20:33

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.

0
herrwolken 3 ene. 2020 a las 19:38