Skip to content

Instantly share code, notes, and snippets.

@bbeckercontato
Created February 9, 2016 21:02
Show Gist options
  • Save bbeckercontato/d416036e6724890d5e27 to your computer and use it in GitHub Desktop.
Save bbeckercontato/d416036e6724890d5e27 to your computer and use it in GitHub Desktop.
import time
t0 = time.time()
limite = int(input("Digite limite: "))
conjB=[]
primos=[]
conjA = [1, 5, 11, 13, 17, 19, 23, 25, 29, 31, 37, 41,43]
conjTemp = conjA
pa=[]
sequencia=[];
#sequencia=[4,6,2,4,2,4,2,4,2,6,4,2]
# sequencia = diferenca dos elementos do conjunto A
for n in range(0,len(conjA)-1):
sequencia.append(conjA[n+1]-conjA[n]);
k=0
#arq = open("Primos.csv", "w")
while limite > conjTemp[-1]:
for a in conjTemp:
if a%5 != 0:
conjB.append(a)
conjTemp = [s+42 for s in conjTemp]
k=k+1
conjB.remove(1) #remove o numero 1 do inicio da lista
limite2 = conjB[-1]
""" monta matriz de numeros nao primos , produz a matriz ampliada(conjB) multiplicado
pela sequencia mas a mesma e resultante da diferenca entre elementos de conjA
"""
#Bruteforce para achar todos nao primeos , multiplicando-se pela sequencia s(n) = a(n-1) -a(n) :
for i , r in enumerate(conjB):
x = r
primosOld = []
while x <= limite2: # and x <= r**2:
for j in sequencia:
x += r * j # substituivel pelo conjunto -> xn=x(n-1) + x0*(delta primo) ; r =todos os indices do conjunto B, j sao todas as sequencias (filtro de nao primos)
if x > r**2 or x>limite2:
break
else:
# testa se e 0 ou 5:
if x%5 !=0:
# se x nao tem final 0 ou 5 x nao e primo.
pa.append(x)
conjB +=[2,3,5,7]
# subtrai o pa da base:
primos = ((sorted(set(conjB) - set(pa))))
tf = time.time()
print("Tempo executado: ",tf - t0)
print("Foi gerado lista em arquivo de texto no local do programa")
print("\n")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment