-
N개의 수에 대한 최대공약수 구하기컴퓨터 공학 기초/알고리즘 ( algorithm ) 2020. 4. 22. 20:19
유클리드호제법을 이용하여 먼저 0번째와 1번째의 최대공약수를 구한뒤 구한 공약수와 다음 번째 수의 최대공약수를 구하는 방식으로 요소의 마지막 즉 N번째 까지 연산을 수행하게 되면 N개의 숫자의 공통 된 최대공약수를 구할 수 있다.
풀이
// HelloNew_C+.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h" #include<iostream> #include<stdio.h> #include<string> #include<stdio.h> #include<stdbool.h> int gcd(int a, int b){ int tmp; while (b > 0){ tmp = a; a = b; b = (tmp % a); } return a; } using namespace std; int main(){ int n, s, nData; int res = 0; int *nList; cin >> n >> s; nList = new int[n]; for (int i = 0; i < n; ++i){ cin >> nData; nList[i] = abs(nData - s); } res = nList[0]; for (int i = 1; i < n; ++i){ res = gcd(res, nList[i]); } cout << res << "\n"; }
'컴퓨터 공학 기초 > 알고리즘 ( algorithm )' 카테고리의 다른 글
Merge Sort (병합 정렬) (0) 2020.10.27 팩토리얼 0의 개수 구하기 (0) 2020.04.22 최대공약수 (유클리드호제법) 최소공배수 (0) 2020.04.21 Stack 을 이용한 알고리즘 (0) 2020.04.13 전위 후위 증감 연산자 (0) 2019.11.27