[ Foro de Python ]

ayuda en este programa - primos

14-Aug-2020 00:15
Ignacia contreras ortega
4 Respuestas

Hola, necesito ayuda con este programa
construir un  programa en Python, que solicite al usuario un número
entero positivo (n) y a partir de este valor, el programa imprima:
a) Todos los números primos hasta n, considerando al número.
b) Los primeros n números primos.
c) Los factores primos en los que se puede descomponer n.
Por ejemplo:
Si la entrada fuese n = 6, el programa debería mostrar:
Para el valor n = 6:
Los números primos hasta 6, son: 2, 3, 5
Los primeros 6 números primos son: 2, 3, 5, 7, 11, 13
El número 6 en factores primos puede descomponerse como 2 * 3
gracias :3


14-Aug-2020 02:26
Nacho Cabanes (+84)

Qué sabes hacer y qué no? Qué has conseguido hasta ahora?


16-Aug-2020 07:08
Ignacia contreras ortega

esto es lo que he avanzado, pero no me resulta como me pide el enunciado, estoy aprendiendo atravez de un curso pero no se como avanzar

import math
i=1
x = int(input("Ingrese un numero: "))
for k in range (1, (x+1), 1):
      c=0
      for j in range (1, (i+1), 1):
          a = i%j
          if (a==0):
              c = c+1

      if (c==2):
            print (i)
      else:
            k = k-1

      i=i+1

t = int(input('Cuántos primos quieres?: '))
p = 1   #contador de primos encontrados
c = 3   #se evalúan desde 3 en adelante
r = '2' #cadena con el primer resulatdo listo
while p < t:
   fact1 = math.factorial(c-1)
   if fact1 % c == c-1:
       r = r + ',' + str(c)
       p += 1  #se ha encontrado otro primo
   c += 1      #probar con siguiente entero
print(r)        #mostrar resultados almacenados en r


16-Aug-2020 07:29
Ignacia contreras ortega

este es el ultimo avance que pude realizar
import math
i=1
x = int(input("Ingrese un numero: "))
for k in range (1, (x+1), 1):
      c=0
      for j in range (1, (i+1), 1):
          a = i%j
          if (a==0):
              c = c+1

      if (c==2):
           
            print (i)
      else:
            k = k-1

      i=i+1
print("Estos son los numeros primos hasta",x,)
print("----------------------------------------------------")
t = x
p = 1   #contador de primos encontrados
c = 3   #se evalúan desde 3 en adelante
r = '2' #cadena con el primer resulatdo listo
while p < t:
   fact1 = math.factorial(c-1)
   if fact1 % c == c-1:
       r = r + ',' + str(c)
       p += 1  #se ha encontrado otro primo
   c += 1      #probar con siguiente entero
print("los primeros",x,"numeros primos son: ",r,)        #mostrar resultados almacenados en r


16-Aug-2020 11:26
Nacho Cabanes (+84)

No entiendo para qué usas factoriales, ni por qué medio programa tiene comentarios y el otro medio no (bastaría con que los nombres de las variables fueran más legibles), ni por qué en un caso muestras resultados directamente y en otro los acumulas en una cadena de texto...

Parece un "copia y pega" hecho desde distintos sitios, sin terminar de entender lo que haces.

Lo primero es que elijas un planteamiento. Por ejemplo, para ver los primos desde un número hasta n, podría ser "voy a ver, desde 1 hasta n, si el n es divisible por cada número en ese intervalo, y a contar los que lo son. Si he obtenido exactamente 2, el número es primo".

Además, dado que parte del programa es repetitiva, sería interesante saber si puedes (o incluso debes) usar funciones, o si, por el contrario, NO DEBES emplearlas porque aún no te las han explicado.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)