Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Numerics;
- using System.Threading;
- namespace StrangeThing
- {
- class GCD3
- {
- class Num
- {
- public BigInteger v;
- public Num(BigInteger a)
- {
- v = a;
- }
- public override string ToString()
- {
- return v.ToString();
- }
- }
- private Num A, B, C;
- public readonly BigInteger result;
- public GCD3(BigInteger a, BigInteger b, BigInteger c)
- {
- A = new Num(a);
- B = new Num(b);
- C = new Num(c);
- var t1 = new Thread(() =>
- {
- while (true)
- {
- var x = A;
- var y = B;
- if (x.v == 0 || y.v == 0 || x.v == y.v)
- {
- break;
- }
- if (x.v < y.v)
- {
- B = new Num(y.v % x.v);
- }
- else
- {
- A = new Num(x.v % y.v);
- }
- }
- });
- var t2 = new Thread(() =>
- {
- while (true)
- {
- var y = B;
- var z = C;
- if (y.v == 0 || z.v == 0 || y.v == z.v)
- {
- break;
- }
- if (y.v < z.v)
- {
- C = new Num(z.v % y.v);
- }
- else
- {
- B = new Num(y.v % z.v);
- }
- }
- });
- var t3 = new Thread(() =>
- {
- while (true)
- {
- var x = A;
- var z = C;
- if (x.v == 0 || z.v == 0 || x.v == z.v)
- {
- break;
- }
- if (x.v < z.v)
- {
- C = new Num(z.v % x.v);
- }
- else
- {
- A = new Num(x.v % z.v);
- }
- }
- });
- t1.Start();
- t2.Start();
- t3.Start();
- t1.Join();
- t2.Join();
- t3.Join();
- result = BigInteger.Max(BigInteger.Max(A.v, B.v), C.v);
- }
- }
- }
- using System;
- namespace StrangeThing
- {
- class Program
- {
- static void Main()
- {
- Console.WriteLine("Hello");
- //Console.WriteLine(new GCD3(5, 100, 20).result);
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement