최근에 나는 몇 가지 간단한 C 언어 문제를 브러시하기 시작했다. 최대 공약수와 피사체의 최소 공배수를 달성하기 위해 찾는, 그가 수행하고있다,하지만 여전히 미숙 발견, 모두 내가 사용 나중에 검토를 위해, 아이디어를 쓰기로 결정 인상이있다.
작은 규모의 대형에서 가장 큰 수요, 모두, 최대 공약수의 조건을 충족하는 첫번째이기 때문에 우선 I는 다음, 직접 폭력, 하나 개의 시도 하나를 해결하는 방법을 생각
1 #INCLUDE <iostream> 2 #INCLUDE <STDIO.H> 3 사용 공간을 성병; 4 INT의 주 () (5) { 도 6 의 INT m, N; 7 INT의 공통 = 1,000 ; 8 CIN >> m; 9 CIN >> N; 10 동안 ( 1 ) 11 { 12 (13) 의 경우 (m을 %의 공통 == 0 && N %의 공통 == 0 ) 14 { 15 COUT << 공통; (16) 휴식 ; 17 } 18 19 다른 { 20 common-- ; 21 } 22 23 } 리턴 0 ; 24 }
물론, 이것은 가장 직접적인 방법의 이해 실제로 더 나은,하지만 숫자가 증가 할 때, 그 효율이 높은 명확하지 않다.
다음은 두 번째 방법은 "유클리드는"있다 :
이 방법은 또한 두 수있는 크고 작은 나타내는, 우리는 첫 번째 두 숫자하는 맥스 최소을 이해해야한다.
첫 번째 단계 : 최대 % 분 얻어진 결과, 우리는 그것을 저장하기위한 변수 TEMP 걸릴. 따라서 온도가 최대 %의 분 =;
단계 2 : 값 최소 최대 할당이 최소가 상기 처리를 계속하고, 온도의 값이 할당 될 때까지 온도 = 0; 임시의 최대 공약수에 (즉, 원형 최대)
1 #INCLUDE <iostream> 2 사용 스페이스 성병; 3 INT의 주 () -4- { 5 INT 온도 = 1 , 최대, 분; 6 CIN >> 최대; 7 CIN >> 분; 8 상태 (온도)이 9 { 10 온도가 최대의 % = 분; (11) 최대 = 분; 12 분 = 온도; 13 } 14 COUT << 최대; 15 반환 0 ; 16 }
지점 및 최대 공약수를 계산 최소 공배수, 최소 공배수의 최대 공약수를 획득 한 후 (최대 최소 *)과 동일하다 매우 단답형 / 온도된다.