LUCAS WILLEMS
Un étudiant de 27 ans passionné par les maths et la programmation
Un étudiant de 27 ans 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 += 1
La 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.