Autor
|
Tema: [Python] - ¿Es primo? (Leído 13,540 veces)
|
Meta
|
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: Diseñ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.
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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 Saludos
|
|
« Última modificación: 1 Diciembre 2010, 13:30 pm por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Ricardo95
Desconectado
Mensajes: 25
|
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’
|
|
|
En línea
|
|
|
|
Shell Root
|
Quizás podría hacerlo así, -aun no manejo mucho python, pero así medio aprendo-#!/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
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
Dnk!
|
Pienso que asi queda mejor, haganme saber recien empiezo en python #!/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!
|
|
« Última modificación: 1 Diciembre 2010, 23:25 pm por Dnk! »
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Dnk!, en realidad el 2 también es primo 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 Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Dnk!
|
Dnk!, 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.
|
|
|
En línea
|
|
|
|
pucheto
Desconectado
Mensajes: 215
|
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
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
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 ## 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: n = input("Dame n:") print (GetPrimes(n).count(n)==1)
|
|
« Última modificación: 4 Diciembre 2010, 14:11 pm por Karcrack »
|
En línea
|
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Calcular si un nº dado es primo
PHP
|
luiggy2
|
3
|
4,446
|
13 Marzo 2009, 13:06 pm
por Agente Naranja
|
|
|
Golazo que le hice a un primo en PES2010!!
Foro Libre
|
Amerikano|Cls
|
4
|
2,524
|
25 Junio 2010, 14:06 pm
por SpuTniK.
|
|
|
Factor primo más grande de un número muy largo
Programación C/C++
|
DickGumshoe
|
9
|
9,058
|
5 Julio 2012, 04:01 am
por do-while
|
|
|
Primo.wz
WarZone
|
wakamole
|
1
|
2,163
|
6 Marzo 2013, 03:17 am
por wakamole
|
|
|
mayor divisor primo
Programación C/C++
|
mariano96
|
2
|
2,071
|
24 Febrero 2015, 02:01 am
por mariano96
|
|