Maison  >  Questions et réponses  >  le corps du texte

python - 求这样的4个自然数p、q、r、s(p<=q<=r<=s),使得一下等式成立:1/p+1/q+1/r+1/s=1。

PHP中文网PHP中文网2741 Il y a quelques jours1189

répondre à tous(4)je répondrai

  • 怪我咯

    怪我咯2017-04-18 09:29:36

    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)

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:29:36

    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.

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 09:29:36

    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

    répondre
    0
  • 高洛峰

    高洛峰2017-04-18 09:29:36

    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.

    répondre
    0
  • Annulerrépondre