// Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
//
// 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
//
// By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace projecteule002
{
class Program
{
static void Main(string[] args)
{
//F1();
//F2();
F3();
}
private static void F1()
{
Console.WriteLine(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod());
DateTime timeStart = DateTime.Now;
int sum = 0;
int temp;
for (int i = 0; (temp = Fibonacci(i)) < 4000000; i++)
{
if (temp % 2 == 0)
{
sum += temp;
}
}
Console.WriteLine(sum);
Console.WriteLine("Total Milliseconds is " + DateTime.Now.Subtract(timeStart).TotalMilliseconds + "\n\n");
}
private static void F2()
{
Console.WriteLine(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod());
DateTime timeStart = DateTime.Now;
int sum = 0;
int temp;
for (int i = 0; (temp = evenFibonacci(i)) < 4000000; i++)
{
sum += temp;
}
Console.WriteLine(sum);
Console.WriteLine("Total Milliseconds is " + DateTime.Now.Subtract(timeStart).TotalMilliseconds + "\n\n");
}
private static void F3()
{
Console.WriteLine(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod());
DateTime timeStart = DateTime.Now;
int sum = 10;
int f1 = 2;
int f2 = 8;
int temp;
while ((temp = 4 * f2 + f1) < 4000000)
{
f1 = f2;
f2 = temp;
sum += temp;
}
Console.WriteLine(sum);
Console.WriteLine("Total Milliseconds is " + DateTime.Now.Subtract(timeStart).TotalMilliseconds + "\n\n");
}
private static int Fibonacci(int n)
{
if (n <= 1)
{
return 1;
}
else
{
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
private static int evenFibonacci(int n)
{
if (n == 0)
{
return 2;
}
else if (n == 1)
{
return 8;
}
else
{
return 4 * evenFibonacci(n - 1) + evenFibonacci(n - 2);
}
}
}
}
/*
Void F1()
4613732
Total Milliseconds is 548.0696
Void F2()
4613732
Total Milliseconds is 9.0011
Void F3()
4613732
Total Milliseconds is 5.5007
By GodMoon
*/
【ProjectEuler】ProjectEuler_002
最新推荐文章于 2024-03-21 19:55:43 发布