python - 求这样的4个自然数p、q、r、s(p<=q<=r<=s),使得一下等式成立:1/p+1/q+1/r+1/s=1。
PHP中文网
PHP中文网 2017-04-18 09:27:36
0
4
1223
PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(4)
刘奇

Solution violente ;
Les nombres entiers sont 10 000 fois plus faciles à utiliser que les nombres à virgule flottante

for p in range(1,100):
    for q in range(p,100):
        for r in range(q,100):
            for s in range(r,100):
                if p * q * r + p * q * s + p * r * s + q * r * s == p * q * r * s:
                    print(p,q,r,s)
Peter_Zhu

La violence, algorithmiquement elle ne devrait être que violente.
Mais il existe de nombreuses façons d’utiliser la violence.

  1. Après avoir multiplié les deux côtés (pqrs), vous obtenez $$ qrs+prs+pqs+pqr=pqrs $$, vous pouvez en forcer trois et calculer le quatrième.

  2. Organisez la formule ci-dessus pour obtenir $$ ps(q+r)+qr(p+s)=pqrs $$ $$ qr(p+s)=ps[qr-(q+r )] $$
    $$ frac{p+s}{ps}=frac{qr-(q+r)}{qr} $$

De cette façon, il vous suffit d'en forcer deux, d'écrire les résultats pendant le processus de force brute, et de vérifier le tableau à chaque fois pour voir si la valeur calculée cette fois est apparue auparavant.

左手右手慢动作

Si vous ne voulez qu'une seule solution, alors p=q=r=s=4 c'est très bien !


Questions auxquelles j'ai répondu : Python-QA

小葫芦

Je pense aussi à des solutions violentes, mais j'ai une nouvelle découverte.

1/p+1/q+1/r+1/s=1 et p<=q<=r<=s, on peut obtenir p=q=r=s lorsque p est le plus grand, 4/ p>= 1, puis p<=4, puis la valeur maximale dans la boucle est déterminée. La valeur maximale de la boucle for est 4 et les valeurs supérieures à 4 n'ont pas besoin d'être prises en compte. De la même manière, on peut en déduire q<=6, r<=12, s<=42, ce qui peut réduire la portée de la boucle for.

Il devrait être que chaque fois que x (x=1) sur le côté droit de l'équation est déterminé, une valeur maximale et minimale de p peut être déterminée.
Chaque fois que p est déterminé (lors d'une boucle), une valeur maximale et minimale de q peut être déterminée.
Il en va de même pour r et s.

Cependant, je n'ai pas pu exprimer les règles de 4, 6, 12 et 42 avec des formules. Il devrait y avoir un algorithme de formule pouvant être appliqué à 1/p+1/q+1/r+. 1/s+1 /...=x.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal