J'ai écrit d'un simple générateur de séquence de Fibonacci qui ressemble à:Les nombres longs de Fibonacci non signés sont-ils négatifs?
#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;
}
}
Cependant, comme r
obtient autour de la valeur de 40, les choses étranges commencent à se produire. La valeur de c
oscille entre négatif et positif, en dépit du fait qu'il est un entier de unsigned
, et bien sûr la séquence de Fibonacci ne peut pas être exactement celle-là.
Que se passe-t-il avec les entiers unsigned long long
?
Est-ce que c
devient trop grand même pour un entier long long
?
Donc, vous envisagez de stocker 1000e numéro de fibonacci dans un (éventuellement) nombre de 64 bits? 1000e fibonacci nombre FYI est: 4346655768693745643564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875. Vous devez utiliser un type de données bigint personnalisé. –
Si c'est une option, python est un bon choix de langue car il a le support de bigint intégré. –