1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| # teste la condition sur les quotients
def test (t1,t2):
return t1[0]*t2[1]*t2[2]==t2[0]*t1[1]*t1[2]
# détermine la liste de tous les triplets (i,j,k) de somme S avec i<=j<=k
def triplets (S):
return [(i,j,S-i-j) for i in range(1,S/3+1) for j in range(i,2*S/3-i+1) if S-i >=2*j]
#compte toutes les solutions avec i+j+k=S
def sol(S):
k=0
L=triplets(S)
i=len(L)
for j in range (0,i-1):
for k in range(j+1,i):
if test(L[j],L[k]):
k=k+1
#enlever le commentaire pour voir les solutions
#print S,L[j],L[k]
return k
#cherche les solutions avec S<=100
#pour les avoir toutes remplacer 101 par 766
def main():
for i in range(3,101):
print i,sol(i)
if __name__ == '__main__':
main() |
Partager