Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- t0 = time.time()
- # limite = int(input("Digite limite: "))
- limite=1000
- 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]
- print conjB
- print "k"
- """ 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)
- print x
- 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)
- print "app"
- print x
- conjB +=[2,3,5,7]
- # subtrai o pa da base:
- primos = ((sorted(set(conjB) - set(pa))))
- print "pa:"
- print pa
- tf = time.time()
- print("Tempo executado: ",tf - t0)
- print(primos)
- print("Foi gerado lista em arquivo de texto no local do programa")
- print("\n")
- print limite2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement