Bonjour,
Je dois résoudre le problème suivant :
"Les nombres pentagonaux obéissent à la formule Pn=n(3n-1)/2. Les dix premiers nombres pentagonaux sont :
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
On peut voir que P4 + P7 = 22 + 70 = 92 = P8. Cependant, leur différence, 70 - 22 = 48, n'est pas pentagonale.
Trouver les deux nombres pentagonaux Pj et Pk, dont la somme et la différence sont pentagonales, et dont D = |Pk - Pj| est minimisée. Donner la valeur de D."
Or actuellement et après deux jours de réflexion, je ne parviens pas à trouver une solution, je pense que celle ci-dessus, en soit, pourrait fonctionner, mais elle demande beaucoup trop de temps. Pourriez-vous me donner une piste pour un programme plus court et plus rapide s'il-vous-plaît ? Merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 L = [ ] def abc(): for n in range(1, 10000): L.append(n * (3*n-1) / 2) for i in range(1, 9999): for j in range(1, 9999): for k in range(1, 9999): if abs(L[i] - L[j]) == L[k]: for l in range(1, 9999): if L[i] + L[j] == L[l]: return L[i] - L[j]
Partager