Skip to content

Instantly share code, notes, and snippets.

@brunobbbs
Last active December 20, 2015 10:08
Show Gist options
  • Save brunobbbs/6112842 to your computer and use it in GitHub Desktop.
Save brunobbbs/6112842 to your computer and use it in GitHub Desktop.
Dejafio: O Objetivo deste Kata é escrever um código que encontre números primos utilizando o método do crivo de erastótenes.
#!/usr/bin/env
#-*- coding: utf-8 -*-
from sys import argv
from math import floor, sqrt
def gera_numeros_primos(lista, maior_num_checado):
for n in lista:
if n > maior_num_checado:
break
multiplo = lambda num, n: num % n == 0 and num != n
[lista.remove(num) for num in reversed(lista) if multiplo(num, n)]
return lista
if __name__ == '__main__':
try:
num_limite = int(argv[1])
except ValueError:
print "Você deve digitar um número inteiro!"
num_limite = False
except IndexError:
num_limite = int(raw_input("Digite um número inteiro: "))
finally:
if num_limite:
maior_num_checado = floor(sqrt(num_limite))
lista = range(2,num_limite + 1)
result = gera_numeros_primos(lista, maior_num_checado)
print result
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment