Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Meta en 1 Diciembre 2010, 04:27 AM

Título: [Python] - ¿Es primo?
Publicado por: Meta en 1 Diciembre 2010, 04:27 AM
Buenas:

Por unos días que no he tenido tiempo estar en el ordenador por el temporal que me fastidió Internet y el Windows porque se me apagó de repente, vuelvo a por el Python.

Ejercicio:
CitarDiseña una función es_primo que determine si un número es primo (devolviendo True) o no (devolviendo False). Diseña a continuación un procedimiento muestra_primos que reciba un número y muestre por pantalla todos los números primos entre 1 y dicho número.

- Aquí función.

- introducir un número.
- ¿El número es primo?
Verdadero.
- entonces.
Falso.

Saludo.
Título: Re: [Python] - ¿Es primo?
Publicado por: Novlucker en 1 Diciembre 2010, 12:42 PM
Código (python) [Seleccionar]
for x in [x for x in range(2,input('Valor maximo: '))if all(x%i for i in range(2,x))]:
   print x


Ahora quiero ver tu solución, que como sabrás, esto no es lo que pide el ejercicio exactamente

¿Te has planteado releer el libro con el que estas aprendiendo Python? Porque tengo la ligera sospecha de que aún no has aprendido nada :silbar:

Saludos
Título: Re: [Python] - ¿Es primo?
Publicado por: Ricardo95 en 1 Diciembre 2010, 19:37 PM
Yo lo haria usando los operadores logicos true y false.(Tambien es cierto que es como aprendi en la guia que estoy siguiendo)


#!/usr/bin/env python

n=int(raw_input("Dime un numero")

puede_primo = True

for divisor in range(2, n):
   if n % divisor == 0:
      puede_primo = False

if puede_primo:
   print 'El numero', n, 'es primo'

else:
   print 'El numero', n, 'no es primo'
Título: Re: [Python] - ¿Es primo?
Publicado por: Shell Root en 1 Diciembre 2010, 22:05 PM
Quizás podría hacerlo así, -aun no manejo mucho python, pero así medio aprendo-
Código (python) [Seleccionar]
#!/usr/bin/python

def primeNumber(sNumber):
  sCount = 2
  sState = "true"

  while ( (sState == "true") and ( sCount != sNumber ) ):
    if( ( sNumber % sCount )  == 0 ):
      sState = "false";
    sCount +=1
 
  return sState
Título: Re: [Python] - ¿Es primo?
Publicado por: Dnk! en 1 Diciembre 2010, 22:32 PM
Pienso que asi queda mejor, haganme saber recien empiezo en python  :-*

Código (python) [Seleccionar]

#!/usr/bin/python

def esPrimo(num):
   if num < 2: return False
   for i in range(2,num):
       if (num%i==0):
           return False
   return True


xDnk!
Título: Re: [Python] - ¿Es primo?
Publicado por: Novlucker en 1 Diciembre 2010, 22:51 PM
Dnk!, en realidad el 2 también es primo :silbar:

Por otra parte, esos métodos (incluído el mio que imprime los primos entre 1 y n) efectivamente son válidos, pero no del todo eficientes :P

Saludos
Título: Re: [Python] - ¿Es primo?
Publicado por: Dnk! en 1 Diciembre 2010, 23:26 PM
CitarDnk!, en realidad el 2 también es primo

Ups, pensaba que no. Ajam es verdad, esa parte me la he saltado, todo por las prisas xD.
Título: Re: [Python] - ¿Es primo?
Publicado por: pucheto en 2 Diciembre 2010, 03:05 AM
Código (python) [Seleccionar]

import math

def esPrimo_n(n,prims):
sq = math.sqrt(n)
for i in prims:
if i > sq: return True
if n%i == 0: return False
return True

def esPrimo(n):
prims = [2]
for i in xrange(3,n+1,2):
if esPrimo_n(i,prims):
prims += [i]
return prims[len(prims)-1]==n
Título: Re: [Python] - ¿Es primo?
Publicado por: Karcrack en 4 Diciembre 2010, 14:07 PM
Ya que sale la pregunta, y a mi me encantan los numeros primos aqui esta la forma mas rapida de mostrar la cantidad de primos hasta n :)
Código (python) [Seleccionar]
## coding: utf-8
## Criba de Eratóstenes

def GetPrimes(n):
# Obtenemos el lado de la criba
nroot = int(n**0.5)
# Marcamos todos los numeros como primos
sieve = [True]*(n+1)
# El 0 y el 1 no son primos
sieve[0] = False
sieve[1] = False

# Recorremos todos los números de 2 hasta la raíz
for i in xrange(2, nroot+1):
# Si esta marcado como primo...
if sieve[i]:
# Obtenemos la cantidad de multiplos en el rango
m = n/i - i
# Marcamos todos sus multiplos como NO primos
sieve[i*i: n+1:i] = [False] * (m+1)
# Devolvemos solo los primos del rango
return [i for i in xrange(n+1) if sieve[i]]

print GetPrimes(input("Dame n:"))


Para saber si n es primo seria asi:
Código (python) [Seleccionar]
n = input("Dame n:")
print (GetPrimes(n).count(n)==1)

Título: Re: [Python] - ¿Es primo?
Publicado por: [L]ord [R]NA en 6 Diciembre 2010, 06:56 AM
:xD publique esa Criba en un problema que puso Novlucker en la zona de ejercicios.