Le nombre de fois qui a la même valeur lorsqu'il est lu à partir de la gauche ou de la droite est appelé le nombre de fois. Parmi le nombre de fois exprimé par le produit de deux chiffres, le plus grand nombre est 9009 = 91 x 99.
Maintenant, trouvez le nombre maximum de fois exprimé par le produit de trois chiffres. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%204
J'ai revu le code que j'ai écrit. Le fait qu'il soit jugé si le reste de la division devient ou non 0 semble avoir une marge d'amélioration lorsqu'on le considère en termes de jugement des nombres premiers.
L'algorithme suivant a été considéré comme un algorithme similaire au tamis d'élastotence.
target = seed * 1000 + int (str (seed) [:: -1])
, recherchez la liste ci-dessus à partir du plus grand nombre, et terminez lorsque le nombre qui devient True est trouvé.J'ai essayé de mettre en œuvre ce qui précède.
def erat_approach():
tl = [False]*(10**6)
for i in range(800,1000):
tl[i*800:i*1000:i] = [True]*200
t = 999
while 1:
n = t*1000+int(str(t)[::-1])
if tl[n]:
break
t-=1
print n
Résultat: l'explosion était en retard (exécutée 100 fois)
Recommended Posts