본문 바로가기

공부하자/Codility

[Codility] Lesson12. CommonPrimeDivisors (C#)

문제: app.codility.com/programmers/lessons/12-euclidean_algorithm/common_prime_divisors/

 

CommonPrimeDivisors coding task - Learn to Code - Codility

Check whether two numbers have the same prime divisors.

app.codility.com

 

 

 

 

            int Z = A.Length;
            int result = 0;

            for (int i = 0; i < Z; i++)
            {
                if (isSameDivisors(A[i], B[i]))
                {
                    result++;
                }
            }

            return result;

        
        static bool isSameDivisors(int a, int b)
        {
            int gcd_ab = getGCD(a, b);
            int gcd_a = 0;
            int gcd_b = 0;

            while (gcd_a != 1)
            {
                gcd_a = getGCD(a, gcd_ab);
                a /= gcd_a;
            }

            while (gcd_b != 1)
            {
                gcd_b = getGCD(b, gcd_ab);
                b /= gcd_b;
            }

            return (a == 1 && b == 1) ? true : false;
        }
        
        static int getGCD(int N, int M)
        {
            if (M == 0) return N;
            return getGCD(M, N % M);
        }