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 += 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.
Les commentaires ne sont plus disponibles.