[PYTHON] Projet Euler 35

problème

197 est appelé un nombre premier cyclique, car les nombres 197, 971, 719 obtenus en faisant tourner les chiffres sont tous des nombres premiers.

Moins de 100 a 13 nombres premiers cycliques: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79 et 97.

Combien de nombres premiers mobiles sont inférieurs à 1 million? http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2035

Répondre

0,2,4,5,6,8 ne sont pas inclus dans les chiffres des nombres premiers cycliques à deux chiffres ou plus. En effet, lorsque ces nombres sont dans le premier chiffre, ils sont toujours divisibles par 2 ou 5. Par conséquent, à part 2,5, nous devrions considérer les nombres qui incluent seulement 1,3,7,9. Afin de créer ce nombre d'ensembles, j'ai créé une fonction appelée mapall. mapall est une fonction qui combine chaque élément e1 et e2 d'un certain ensemble iter1 pour le nombre de fois num spécifié par une règle de couplage appropriée f et renvoie le résultat sous la forme d'un type d'ensemble. Tout d'abord, en utilisant ['', 1,3,7,9] comme iter1, j'ai créé un nombre à 6 chiffres qui est considéré comme le plus grand. '' Est inclus de telle sorte que lorsqu'ils sont combinés, les éléments de la liste d'origine restent dans la liste combinée. Par exemple, "+" 3 "devient" 3 "et les éléments de la liste d'origine resteront dans la liste combinée.

import mymath
def circle(num):
  s = str(num)
  for c in range(len(s)):
    s = s[1:]+s[0]
    yield int(s)

def mapall(f, iter1, num=1):
  ret = iter1
  for i in range(num):
    ret = set([f(e1,e2) for e1 in ret for e2 in iter1])
  return ret
  
def connect_num(e1,e2):
  return str(e1)+str(e2)

def main():
  pri = mymath.get_primes(10**6)
  n_list = ['',1,3,7,9]
  pn5 = mapall(connect_num, n_list,5)
  pn5.remove('')
  ans = {}
  for pn in pn5:
    if pn in ans:
      continue
    flag = True
    for n in circle(pn):
      if not pri['bool'][n]:
        flag = False
        break
    if flag:
      for n in circle(pn):
        ans[n] = True
  print len(ans)+2
main()

Recommended Posts

Projet Euler 37
Projet Euler 7
Projet Euler 47
Projet Euler 31
Projet Euler 4
Projet Euler 38
Projet Euler 17
Projet Euler 26
Projet Euler 23
Projet Euler 22
Projet Euler 19
Projet Euler 50
Projet Euler 42
Projet Euler 33
Projet Euler 32
Projet Euler 43
Projet Euler 35
Projet Euler 36
Projet Euler 24
Projet Euler 46
Projet Euler 48
Projet Euler 45
Projet Euler 6
Projet Euler 44
Projet Euler 39
Projet Euler 40
Projet Euler 49
Projet Euler 29
Projet Euler 27
Projet Euler 41
Projet Euler 18
Projet Euler 13
Projet Euler 30
Projet Euler 16
Projet Euler 14
Projet Euler 34
Projet Euler 25
[Projet Euler] problème1
Projet Euler15 "Chemin du treillis"
Project Euler 2 Acceleration 2.21 Économisez des microsecondes.
Projet Euler Original Method Group 1
Qu'est-ce que Project Euler 3 Acceleration?
Programmation fonctionnelle dans Python Project Euler 1
Projet Euler 10 "Somme des nombres premiers"
[Note] Projet Euler en Python (problème 1-22)
Programmation fonctionnelle dans Python Project Euler 3
Projet Euler # 5 "Minimum Multiple" en Python
Projet Euler 4 Tentative d'accélération
Programmation fonctionnelle dans Python Project Euler 2
Projet Euler 11 "Produit maximum dans la grille"
Projet Euler # 15 "Lattice Path" en Python
Projet Euler # 4 "Calligraphie maximum" en Python
Projet Euler 9 Conservation des résultats des calculs
Projet Euler # 3 "Maximum Prime Factors" en Python
Projet Euler # 7 "1000 1er nombre premier" en Python
Projet Euler # 16 "Somme des pouvoirs" en Python
Projet Euler # 9 "Numéro spécial Pitagolas" en Python
Projet Euler # 14 "Colonne de nombre de collats la plus longue" en Python
J'ai écrit Project Euler 1 en une seule ligne.
Projet Euler # 2 "Even Fibonacci Number" en Python
Projet Euler # 17 "Nombre de caractères" en Python