C impression de la première million de nombres de Fibonacci

Je suis en train d'écrire du code C qui permet d'imprimer le premier de 1 million nombres de Fibonacci.

Le réel problème est que je veux aller le lats 10 chiffres de F(1 000 000) de

Je comprends comment la séquence fonctionne et comment écrire le code pour réaliser que cependant que F(1,000,000) est très grande, j'ai du mal à trouver un moyen de le représenter.

C'est du code, je suis en utilisant:

#include<stdio.h>

int main()
{
   unsigned long long n, first = 0, second = 1, next, c;

   printf("Enter the number of terms\n");
   scanf("%d",&n);

   printf("First %d terms of Fibonacci series are :-\n",n);

   for ( c = 0 ; c < n ; c++ )
   {
      if ( c <= 1 )
         next = c;
      else
      {
         next = first + second;
         first = second;
         second = next;
      }
      printf("%d\n",next);
   }

   return 0;
}

Je suis en utilisant long long pour essayer et assurez-vous que il ya assez de bits pour stocker le nombre.

C'est la sortie pour la première 100 numéros:

First 100 terms of Fibonacci series are :-                                                                                                                                     
0                                                                                                                                                                              
1                                                                                                                                                                              
1                                                                                                                                                                              
2                                                                                                                                                                              
3                                                                                                                                                                              
5                                                                                                                                                                              
8                                                                                                                                                                              
13                                                                                                                                                                             
21                                                                                                                                                                             
34                                                                                                                                                                             
55                                                                                                                                                                             
89                                                                                                                                                                             
144                                                                                                                                                                            
233                                                                                                                                                                            
377                                                                                                                                                                            
610                                                                                                                                                                            
987                                                                                                                                                                            
1597                                                                                                                                                                           
2584                                                                                                                                                                           
4181                                                                                                                                                                           
6765                                                                                                                                                                           
10946                                                                                                                                                                          
17711                                                                                                                                                                          
28657                                                                                                                                                                          
46368                                                                                                                                                                          
75025                                                                                                                                                                          
121393                                                                                                                                                                         
196418                                                                                                                                                                         
317811                                                                                                                                                                         
514229                                                                                                                                                                         
832040                                                                                                                                                                         
1346269                                                                                                                                                                        
2178309                                                                                                                                                                        
3524578                                                                                                                                                                        
5702887                                                                                                                                                                        
9227465                                                                                                                                                                        
14930352                                                                                                                                                                       
24157817                                                                                                                                                                       
39088169                                                                                                                                                                       
63245986
102334155                                                                                                                                                                      
165580141                                                                                                                                                                      
267914296                                                                                                                                                                      
433494437                                                                                                                                                                      
701408733                                                                                                                                                                      
1134903170                                                                                                                                                                     
1836311903                                                                                                                                                                     
-1323752223                                                                                                                                                                    
512559680                                                                                                                                                                      
-811192543                                                                                                                                                                     
-298632863                                                                                                                                                                     
-1109825406                                                                                                                                                                    
-1408458269
...

Tronquée de la sortie, mais vous pouvez voir le problème, je crois que la taille du nombre généré est à l'origine de la valeur de dépassement de capacité négatif. Je ne comprends pas comment l'arrêter en toute honnêteté.

Quelqu'un peut-il m'indiquer la bonne direction à la façon de gérer les numéros de cette taille?

Je n'ai pas essayé d'imprimer le premier million, car si elle échoue sur l'impression F(100) il n'y a pas beaucoup d'espoir de l'impression F(1,000,000).

consultez cette rubrique: stackoverflow.com/questions/4827538/big-integer-in-c-or-c
Un long ne sera pas près d'être suffisant!
Un long long devrait aller au-dessus 1836311903 au moins
Je pense que vous êtes inutilement sévère. Un début un étudiant pourrait ne pas avoir assez d'expérience avec l'arithmétique modulaire à réaliser que la totalité de calcul peut être effectué mod 10^10. Les choses qui sont évidentes pour un programmeur n'est pas toujours évident pour un étudiant.
Utiliser le %lld spécificateur de format au lieu de %d, mais vous obtenez seulement un peu plus loin. Mais de toute façon les réponses ci-dessous sont assez complets.

OriginalL'auteur Chris Edwards | 2015-11-16