LUCAS WILLEMS
Un étudiant passionné par les maths et la programmation
Un étudiant passionné par les maths et la programmation
Voici un résumé de l'énoncé du problème 4 "Largest palindrome product" du Project Euler (traduction complète en français ici) :
Find the largest palindrome made from the product of two 3-digit numbers.
Reformulons le problème : il s'agit de trouver le plus grand palindrome (nombre qui se lit de la même façon de gauche à droite que de droite à gauche) issu du produit de 2 nombres à 3 chiffres. Nous pouvons donc résoudre ce problème de 2 façons différentes :
Voici 2 solutions possibles, en Python, pour résoudre ce problème (1 pour chaque piste) :
def is_palindrome(nb):
if str(nb) == str(nb)[::-1]:
return True
return False
resultat = 0
for i in range(100, 1000):
for j in range(i, 1000):
produit = i*j
#Test si le produit est un palindrome
if is_palindrome(produit):
if produit > resultat:
resultat = produit
print(resultat)def has_2factors_3digits(nb):
for i in range(int(nb**0.5)+1, 99, -1):
q, r = divmod(nb, i)
if r == 0:
if len(str(q)) == 3:
return True
elif len(str(q)) > 3:
return False
return False
i = 997799
j = 1
while i > 10000:
if has_2factors_3digits(i):
print(i)
break
if j%10 == 8:
i -= 110
else:
i -= 1100
j += 1La 1ère solution ne nécessitant pas d'explications particulières (explications de la fonction is_palindrome dans cet article), je ne vais m'attarder que sur la 2nd :
La réponse à ce problème est 906609.
Voici les recherches relatives à cette page :
Qu'en pensez-vous ? Donnez moi votre avis (positif ou négatif) pour que je puisse l'améliorer.
Les commentaires ne sont plus disponibles.