Projet Euler 80 en Python

Alexique
Modifié (January 2023) dans Informatique théorique
Bonjour, 

vous connaissez peut-être les problèmes info du site "Project Euler" et celui-ci est plutôt simple (une solution "brute force" suffit). Il s'agit de calculer la somme des 100 premières décimales des racines carrées de tous les entiers non carrés de 1 à 100.

Mon code Python ci-dessous donne $1$ de plus que la bonne réponse. Pourquoi ? Je ne pourrai pas dormir sans savoir. Il donne bien 475 pour $\sqrt{2}$. 
import math
from decimal import *
getcontext().prec = 101
s=0
for n in range(0,101):   
    root = Decimal(n).sqrt()
    if int(root+Decimal(0.5))**2!=n:        
        for digit in str(root).replace('.',"")[:-1]:
            s=s+int(digit)  
print(s)
Merci.

Réponses

  • Calli
    Modifié (January 2023)
    Bonsoir,
    getcontext().prec = 102 et str(root).replace('.',"")[:-2] corrigent le problème.
  • Ok donc il fallait juste que je pousse un cran plus loin les décimales a cause des erreurs d’arrondis.
    Merci.
Connectez-vous ou Inscrivez-vous pour répondre.