Advertisement
Guest User

Javascript Fibonacci Generator

a guest
Jun 13th, 2012
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. N=1234;/*N as in N'th Fibonacci-number*/
  2. base=10;/*Number base, from 2 up to 16*/
  3.  
  4. /*End_of_setting_variables*/
  5. digitsStr='0123456789ABCDEF';
  6. bpe=0;
  7. for(bpe=0;(1<<(bpe+1))>(1<<bpe);bpe++);  
  8. bpe>>=1;                  
  9. mask=(1<<bpe)-1;          
  10. radix=mask+1;
  11. x=[1];
  12. y=[0];
  13.  
  14. function add_(x,y){
  15.   var i,c,k,kk;k=x.length<y.length?x.length:y.length;
  16.   for(c=0,i=0;i<k;i++){
  17.     c+=x[i]+y[i];
  18.     x[i]=c&mask;
  19.     c>>=bpe;
  20.   }
  21.  
  22.   for (i=k;c&&i<x.length;i++){
  23.     c+=x[i];
  24.     x[i]=c&mask;
  25.     c>>=bpe;
  26.   }
  27.   if(!!c)
  28.     x.push(c);
  29. }
  30.  
  31. function isZero(x){
  32.   var i;
  33.   for(i=0;i<x.length;i++)
  34.     if(x[i])
  35.       return 0;
  36.   return 1;
  37. }
  38.  
  39.  
  40. function divInt_(x,n){
  41.   var i,r=0,s;
  42.   for(i=x.length-1;i>=0;i--){
  43.     s=r*radix+x[i];
  44.     x[i]=Math.floor(s/n);
  45.     r=s%n;
  46.   }
  47.   return r;
  48. }
  49. s6=[0];
  50. function bigInt2str(x,base){
  51.   var i,t,s="";
  52.  
  53.     s6=x.slice();
  54.  
  55.  
  56.   while(!isZero(s6)){
  57.     t=divInt_(s6,base);  
  58.     s=digitsStr.substring(t,t+1)+s;
  59.   }
  60.  
  61.   var ans="";
  62.   if (s.length==0)
  63.     ans="0";
  64.   else{
  65.     i=0;
  66.     k=0;
  67.     for(i=0;i<s.length;i++)
  68.     {
  69.         ans+=s[i];
  70.         if((i+1)%8==0)
  71.             ans+=" ";
  72.     }
  73.   }
  74.   return ans;
  75. }
  76.  
  77. for(i=1;i<N;i++){
  78.     t=x.slice();
  79.     add_(x,y);
  80.     y=t;
  81. };
  82.  
  83. "F("+N+") = <br><br>"+bigInt2str(x,base)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement