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