c 언어 최대 공약수
2142 단어 알고리즘
만약 두 수의 차이 가 크 지 않 으 면 대수 로 소 수 를 줄 일 수 있다. 소득 의 차이 와 소수 의 최대 공약 수 는 원래 두 수의 최대 공약 수 이다. 예 를 들 어 78 과 60 의 최대 공약 수 를 구 하 는 것 이다. 78 - 60 = 18, 18 과 60 의 최대 공약 수 는 6 이기 때문에 78 과 60 의 최대 공약 수 는 6 이다.
만약 두 수의 차이 가 비교적 크다 면 대수 로 소수 의 몇 배 를 줄 이 고 소수 보다 작 을 때 까지 줄 일 수 있다. 차이 와 소수 의 최대 공 약 수 는 원래 두 수의 최대 공 약수 이다. 예 를 들 어 92 와 16 의 최대 공 약수. 92 - 16 = 76, 76 - 16 = 60, 60 - 16 = 44, 44 - 16 = 28, 28 - 16 = 12, 12 와 16 의 최대 공 약 수 는 4 이다.그래서 92 와 16 의 최대 공 약수 가 4 입 니 다.
전전 상 제법.
두 개의 수가 비교적 클 때, 전전 상 제법 을 사용 하 는 것 이 비교적 편리 하 다. 그 방법 은:
소수 로 대 수 를 나 누 면 소 수 는 원 하 는 최대 공약수 이다. 그렇지 않 으 면 나머지 로 아까 의 나 누 기 를 나눈다.이 새로운 나눗셈 의 나머지 로 아까 의 나머지 를 제거 합 니 다. 이러한 유추 에 따 르 면 하나의 나눗셈 이 정 리 될 때 까지 이 때 나 누 는 숫자 로 서 원 하 는 최대 공약수 입 니 다.
예 를 들 어 4453 과 5767 의 최대 공약수 를 구 할 때 다음 과 같은 나눗셈 을 할 수 있다.
5767 ÷ 4453 = 1 여 1314
4453 ÷ 1314 = 3 여 511
1314 ÷ 511 = 2 여 292
511 ÷ 292 = 1 여 219
292 ÷ 219 = 1 여 73
219÷73=3
그래서 5767 과 4453 의 최대 공약수 가 73 이라는 것 을 알 게 되 었 다.
전전 상 나눗셈 은 적용 이 비교적 넓 고 짧 은 나눗셈 보다 훨씬 좋 으 며, 임의의 두 수의 최대 공약수 를 구 할 수 있다.
초등학교 수학 을 복습 한 후, 먼저 두 개의 수 를 재 귀판 으로 하 자.
int GetGCDRec(int n, int m)
{
if (m < n)
{
m ^= n;
n ^= m;
m ^= n;
}
if (n == 0)
return m;
else
return GetGCDRec(n, m % n);
}
전전 상 제법 으로 한 수조 의 모든 수의 최대 공약수 를 구하 다
int GetGCD(int *arr, int len)
{
int iMax = arr[0], iCurr, iRemainder;
for(int i = 1; i < len; i++)
{
iCurr = arr[i];
if (iMax < iCurr)
{
iMax ^= iCurr;
iCurr ^= iMax;
iMax ^= iCurr;
}
iRemainder = iMax % iCurr;
while (iRemainder)
{
iMax = iCurr;
iCurr = iRemainder;
iRemainder = iMax % iCurr;
}
iMax = iCurr;
}//for
return iMax;
}
최소 공배수 는 곱 하기 나 누 기 최대 공약수 이다
int GetLCM(int *arr, int len)
{
int multiple = 1;
for (int i = 0; i < len; i++)
multiple *= arr[i];
return multiple / GetGCD(arr, len);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.