Untitled

 avatar
unknown
c_cpp
2 years ago
1.1 kB
7
Indexable
// Résolution du problème.
    // a <= b <= c <= d
    for (int a = 1; a <= A; a++) {  // 1 <= a <= A
        for (int b = 1; b <= B; b++) {  // 1 <= b <= B
            // Vérifier si a ET b sont impaires.
            if (a % 2 != 0 && b % 2 != 0) {
                continue;
            }
            else {  // Au moins a OU b est pair.
                // Chercher un nombre p > 1 qui divise a^2+b^2 et tel que p^2 < a^2 + b^2.
                for (int p = 2; (p*p) < (a*a + b*b); p++) {  // p > 1
                    if ((a*a + b*b) % p == 0) {  // p divise a^2+b^2
                        // On peut maintenant calculer c et d.
                        int c = (a*a + b*b - p*p) / (2 * p);
                        int d = (a*a + b*b + p*p) / (2 * p);
                        // a <= b <= c <= d ET a^2 + b^2 + c^2 = d^2
                        if (a <= b && b <= c && c <= d && (a*a) + (b*b) + (c*c) == (d*d)) {
                            cout << a << ' ' << b << ' ' << c << ' ' << d << endl;   
                        }  
                    }
                }
            }
        }
    }
Editor is loading...