Ich habe einen einfachen Fibonacci-Sequenz-Generator geschrieben, die wie folgt aussieht:Unsigned lange lange Fibonacci-Zahlen negativ?
#include <iostream>
void print(int c, int r) {
std::cout << c << "\t\t" << r << std::endl;
}
int main() {
unsigned long long int a = 0, b = 1, c = 1;
for (int r = 1; r <= 1e3; r += 1) {
print(c, r);
a = b;
b = c;
c = a + b;
}
}
jedoch als r
um den Wert von 40 wird, seltsame Dinge zu passieren beginnen. c
der Wert schwankt zwischen negativ und positiv, trotz der Tatsache, dass er eine unsigned
Ganzzahl ist, und natürlich kann die Fibonacci-Sequenz nicht genau das sein.
Was passiert mit unsigned long long
Ganzzahlen?
Wird c
zu groß auch für eine long long
Ganzzahl?
Sie planen also, 1000. Fibonacci-Nummer in einer (möglicherweise) 64-Bit-Nummer zu speichern? 1000. Fibonacci-Nummer FYI ist: 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875. Sie sollten einige benutzerdefinierte Bigint Datentyp verwenden. –
Wenn dies eine Option ist, ist Python eine gute Sprachwahl, weil es Bigint-Unterstützung eingebaut hat. –