유클리드 알고리즘 을 상세 하 게 해석 하 다.
a > b 라면 a = kb + q 가 있 습 니 다.
a 를 b 로 나 누 면 k 여 q, 즉 a% b = q 를 얻 을 수 있 습 니 다.
d 가 a 와 b 의 최대 공약수 라 고 가정 하면 a 는 d 에 의 해 정 제 될 수 있 고 b 도 d 에 의 해 정 제 될 수 있 으 며 q = a - kb 그래서 q 도 d 에 의 해 정 제 될 수 있 기 때문에 d 는 b 와 q 의 공약수 이다.
그래서 a 와 b 의 공약수 d 는 b 와 q (a% b) 의 공약수 이기 도 한다.
a2 = b, b2 = q, 나머지 를 구하 면 q2 = b% q.
이렇게 유추 하여 끊임없이 여 유 를 구하 다.
이때 이 bn 은 처음에 a 와 b 와 동시에 최대 공약수 d 가 있다.
그리고 bn 의 최대 공약 수 는 bn 이기 때문에 bn 은 a 와 b 의 최대 공약 수 이다.
코드 는 다음 과 같 습 니 다:
교체 판
int gcd (int a, int b)
{
while (b != 0)
{
int temp = a;
a = b;
b = temp % b;
}
return a;
}
귀환 판
int gcd (int a, int b)
{
if (b == 0)
{
return a;
}
return gcd (b, a % b);
}
코드 는 참고 만 할 수 있 습 니 다. 만약 에 부족 한 점 이 있 으 면 여러분 의 지 도 를 환영 합 니 다. 저 는 반드시 개선 하고 최적화 하 겠 습 니 다.
전재 하려 면 출처 를 밝 혀 주세요.
2015.2.9 검 은 준마
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.