kleines Problemchen -->logischer Fehler



  • Hallo alle zusammen.

    ich hab grad ein Programm geschrieben, dass mir Zahlentrippel ausgeben soll, Und zwar für die Gleichung : a5+b2=c^2.
    Eig sollt das ja ganz easy sein, mein code:

    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    using namespace std;
    
    int main(int argc, char *argv[])
    {
       double sum;
        double wurzel;
       double c;
    
        for(int a=2;a<3000;a++){
                for(int b=2;b<a;b++){
    
                      sum=pow(a,5)+pow(b,2);      
                      wurzel=0;
                     c=sqrt(sum);
    
    if(c==(int)c){
                 wurzel = c; 
                }       
    
                        if(wurzel!=0){
                                      cout<<a<<" "<<b<<" "<< "  "<<(int) wurzel<<endl;
                                       break;
                                       }
                                       } 
                                       }
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Als Ergebnis wird mir ausgegeben:

    1849 2 147008443
    1936 2 164916224
    2025 2 184528125
    2116 2 205962976
    2209 2 229345007
    2304 2 254803968
    2401 2 282475249
    2500 2 312500000
    2601 2 345025251
    2704 2 380204032
    2809 2 418195493
    2916 2 459165024
    Drücken Sie eine beliebige Taste . . .

    Doch leider sind das keine passende Trippel, die Differez beträgt immer 4( oder vllt auch 2^2:P)
    wo ist denn da der Logische Fehler?
    thx im Voraus



  • Ich schätze mal deine Zahlen werden zu groß und werden in exponentieller Darstellung etwas gerundet.

    MfG SideWinder



  • hey SideWinder,
    du hast recht^^
    hab mal die erste Zahl 1849 hoch5 genommen und schon hat man eine so große Zahl, dass man sogar den range von double Zahlen übertrifft.
    thx


Anmelden zum Antworten