Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Numerics;
- using System.Diagnostics;
- namespace GreatestCommonDivisorEuclid
- {
- class GreatestCommonDivisorEuclid
- {
- static BigInteger GcdMine(BigInteger num1, BigInteger num2)
- {
- BigInteger temp;
- if (num1 > num2)
- {
- while (num1 % num2 != 0)
- {
- temp = num2;
- num2 = num1 % num2;
- num1 = temp;
- }
- return num2;
- }
- else
- {
- while (num2 % num1 != 0)
- {
- temp = num1;
- num1 = num2 % num1;
- num2 = temp;
- }
- return num1;
- }
- }
- static BigInteger GcdRecursion(BigInteger num1, BigInteger num2)
- {
- if (num2 == 0)
- {
- return num1;
- }
- else
- {
- return GcdRecursion(num2, num1 % num2);
- }
- }
- static BigInteger GcdIterativeDivision(BigInteger num1, BigInteger num2)
- {
- while (num1 != 0 && num2 != 0)
- {
- if (num1 > num2)
- {
- num1 %= num2;
- }
- else
- {
- num2 %= num1;
- }
- }
- if (num1 == 0)
- {
- return num2;
- }
- else
- {
- return num1;
- }
- }
- static BigInteger GcdIterativeSubtraction(BigInteger num1, BigInteger num2)
- {
- while (num1 != 0 && num2 != 0)
- {
- if (num1 > num2)
- num1 -= num2;
- else
- num2 -= num1;
- }
- if (num1 > num2)
- {
- return num1;
- }
- else
- {
- return num2;
- }
- }
- static void Main(string[] args)
- {
- //bool success;
- //string toBeParsed;
- BigInteger firstNumber = 14234298148921987940, secondNumber = 213484887418;
- BigInteger gcd;
- //do
- //{
- // Console.Clear();
- // Console.Write("Enter first number: ");
- // toBeParsed = Console.ReadLine();
- // success = BigInteger.TryParse(toBeParsed, out firstNumber);
- //}
- //while ((!success) || (firstNumber < 1));
- //do
- //{
- // Console.Clear();
- // Console.WriteLine("Enter first number: {0}", firstNumber);
- // Console.Write("Enter second number: ");
- // toBeParsed = Console.ReadLine();
- // success = BigInteger.TryParse(toBeParsed, out secondNumber);
- //}
- //while ((!success) || (secondNumber < 1));
- Stopwatch timer = new Stopwatch();
- timer.Start();
- gcd = GcdMine(firstNumber, secondNumber);
- timer.Stop();
- Console.WriteLine("GCD is {0}", gcd);
- Console.WriteLine("Elapsed System Clock Ticks: " + timer.ElapsedTicks);
- timer.Reset();
- timer.Start();
- gcd = GcdRecursion(firstNumber, secondNumber);
- timer.Stop();
- Console.WriteLine("GCD (recursion algorithm) is {0}", gcd);
- Console.WriteLine("Elapsed System Clock Ticks: " + timer.ElapsedTicks);
- timer.Reset();
- timer.Start();
- gcd = GcdIterativeDivision(firstNumber, secondNumber);
- timer.Stop();
- Console.WriteLine("GCD (iterative algorithm with division) is {0}", gcd);
- Console.WriteLine("Elapsed System Clock Ticks: " + timer.ElapsedTicks);
- timer.Reset();
- timer.Start();
- gcd = GcdIterativeSubtraction(firstNumber, secondNumber);
- timer.Stop();
- Console.WriteLine("GCD (iterative algorithm with subtraction) is {0}", gcd);
- Console.WriteLine("Elapsed System Clock Ticks: " + timer.ElapsedTicks);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement