fork(1) download
  1. from math import sqrt
  2.  
  3. # **nesse caso específico**, como eu não testo o 2, estou deliberadamente ignorando ele e os demais números pares
  4. def primo(n):
  5. if n % 2 == 0 or n % 3 == 0:
  6. return False
  7. i = 5
  8. limite = int(sqrt(n)) + 1
  9. while i < limite:
  10. if n % i == 0 or n % (i + 2) == 0:
  11. return False
  12. i += 6
  13.  
  14. return True
  15.  
  16. quantidade = 10
  17. lista = []
  18. proxPrimo = None
  19. # começo no 3, pois sei que (2, 3) não são gêmeos
  20. n = 3
  21. while quantidade > len(lista):
  22. # se o número já foi testado antes, não preciso testar de novo
  23. if proxPrimo is None:
  24. if(len(lista) == 0):
  25. atualPrimo = True # e o 3
  26. else:
  27. atualPrimo = primo(n)
  28. else:
  29. atualPrimo = proxPrimo
  30.  
  31. proxPrimo = primo(n + 2)
  32. if atualPrimo and proxPrimo:
  33. lista.append((n, n + 2))
  34. n += 2
  35.  
  36. print(lista)
Success #stdin #stdout 0.02s 9104KB
stdin
Standard input is empty
stdout
[(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73), (101, 103), (107, 109)]