diophantineSoluce.py

# -------------------------------------------------------------------------
#
# PYTHON for DUMMIES 19-20
# Problème 1
#
# Solution :-)
# If suffit d'écrire trois boucles imbriquées et de repérer la
# solution la plus proche requise.
#
# Cette implémentation est un bon compromis entre lisibilité et concision
# Introudire des variables auciliaires permet de mieux comprendre l'algo.
#
# -------------------------------------------------------------------------
# 

def diophantine(a,b,c,nmax,normRequest) :
  sol = [0,0,0]
  indexSol = normRequest  
  for y in range(1,nmax+1):
    for x in range(1,nmax+1):
      for z in range(1,nmax+1):
        residual = abs(x**a + y**b - z**c)
        norm = x*x + y*y + z*z
        index = abs(norm - normRequest)
        if (residual == 0):
          print("        Found [%2d,%2d,%2d] with norm = %d " %(x,y,z,norm))
          if (index < indexSol):
            sol = [x,y,z]
            indexSol = abs(norm - normRequest)
  return sol