본문 바로가기
공부

(오일러 5번)1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수

by 하프상 2017. 3. 27.

#include <iostream>


long long getGCD(long long x, long long y)

{

if(x % y == 0) 

{

return y;

}

else

{

return getGCD(y, x%y);

}

}


long long Cal(int num)

{

long long arr[num] = {0};

int i;

long long gcd;

long long lcm;

long long x;

    long long y;

for(i=0; i<num; i++)

{

arr[i] = i+1;

}


lcm = arr[num-1];

gcd = arr[num-1];


 

for(i=num-2; i>=0; i--)

{

if(gcd > arr[i])

{

x = gcd;

y = arr[i];

}

else

{

x = arr[i];

y = gcd;

}

gcd = getGCD(x, y);

if(lcm > arr[i])

{

x = lcm;

y = arr[i];

}

else

{

x = arr[i];

y = lcm;

}

lcm = (x*y) / getGCD(x, y);

}


return lcm;


}



int main(int argc, char** argv) {

int num;

scanf("%d", &num);

printf("%lld", Cal(num));


return 0;

}

댓글