http://todayhumor.com/?programmer_4689 위 글에 답글로 달아 놓긴 했는데, 조금 오래되서 아무도 안보실까봐...
이 문제는 알고리즘 문제라기 보단 수학 문제인듯 한데요.
유클리드 호제법으로 두 수의 최대 공약수를 구하는 법은 아실겁니다. 유클리드 호제법의 원리가 큰 수를 작은수로 나눴을때 나머지는 두 수의 최대 공약수로 나눠진다는 것을 recursive하게 이용한 것인데요.
여러 수가 있을 때 모든 수를 그 중에 최소값으로 나눈 나머지는 그 수들의 최대 공약수로 나눠진다는 것을 굳이 증명하지 않더라도 아실 것 같은데요.
이를 이용해서 최소값을 구하고 모든 수들의 나머지를 구하고, 그 나머지들의 최소값으로 또 나머지들을 구하는 식으로 유클리드 호제법을 적용하면, 여러 숫자들의 최대 공약수를 쉽게 구할 수 있습니다.
원글의 답글에 대충만든 코드도 있으니 참조하세요.