Fibonacci sequence: Difference between revisions
m
→Arbitrary Precision: streamline code, remove Linq requirement.
Mercerenies (talk | contribs) (Latitude language added) |
m (→Arbitrary Precision: streamline code, remove Linq requirement.) |
||
Line 2,153:
===Arbitrary Precision===
{{libheader|System.Numerics}}
This large step recurrence routine can calculate the two millionth Fibonacci number in
<lang csharp>using System;
using System.Collections.Generic;
using System.Numerics;
Line 2,169 ⟶ 2,168:
public static BigInteger Fsl(int n)
{
int n2 = n >> 1;▼
if ((n & 1) != 1)
{
if (!sl.
} else {▼
if (!sl.ContainsKey(n2 + 1)) sl.Add(n2 + 1,
}▼
▲ else
{▼
▲ return BigInteger.Pow(sl.ElementAt(sl.IndexOfKey(n2)).Value, 2) +
}
}
Line 2,192 ⟶ 2,184:
if (n < 2) return n; BigInteger cur = 0, pre = 1;
for (int i = 0; i <= n - 1; i++)
{
return cur;
}
Line 2,198 ⟶ 2,190:
public static void Main()
{
DateTime st = DateTime.Now;
BigInteger v = Fsl(num);
Console.WriteLine("{0:n3} ms to calculate it,", (DateTime.Now - st).TotalMilliseconds);▼
Console.WriteLine("{0:n3} ms to calculate the {1:n0}th Fibonacci number,",
st = DateTime.Now;
string vs = v.ToString();
Line 2,211 ⟶ 2,206:
Console.WriteLine(vs);
Console.WriteLine("{0:n3} ms to write it to the console.", (DateTime.Now - st).TotalMilliseconds);
▲ }
else
▲ {
Console.WriteLine("partial: {0}...{1}", vs.Substring(1,35), vs.Substring(vs.Length-35));
}
}
}</lang>▼
▲</lang>
{{out}}
<pre>
number of digits is 417975
partial: 53129491750764154305166065450382516...91799493108960825129188777803453125</pre>
=={{header|Cat}}==
|