[Ava]Programmers N個の最大公倍数(Math)
5089 ワード
N個のProgrammers最大公倍数
🔍 問題の説明
https://programmers.co.kr/learn/courses/30/lessons/12953
2つの数の最小公倍数(Least Common Multiple)は、2つの入力倍数に共通する最小数です.たとえば、2と7の最小公倍数は14です.拡張定義後、n個の数の最小公倍数は、n個の数の倍数の最小公倍数となる.n個の数字の配列arrを入力すると、これらの数の最小公倍数を返す関数と解法を完了します.
✔制限
arrは、長さが1または15より大きい配列である.
arrの元素は100以下の自然数である.
✔I/O
arrresult[2,6,8,14]168[1,2,3]6
💡 に答える
複数の最大公倍数の方法を求めますか?
まず2つの数の最大公倍数を求め,次いでこのような値と最大公倍数を求める.
以上の過程を繰り返すだけでいいです!
최대 공배수
を求める:2つの数の積を최소 공약수
で割る.최소 공약수
救い:ユークリッド護法2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r’를 구하고, 다시 r을 r’로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.
=>2つの数字(a
,b
)の間の余剰値を0とし、余剰値(a
)に余剰値(b
)を加え、余剰値(b
)に余剰値(r
)を加える.=>最終的には、残り(
r
)が0の場合、分割値(a
)が持つ値が最大公約数となる.💬 ソースコード
class Solution {
public int solution(int[] arr) {
int answer = arr[0];
for(int i=1; i<arr.length; i++) answer = lcm(answer, arr[i]);
return answer;
}
//최대공약수
static int gcd(int a, int b){
while(b>0){
int r = a%b;
a = b;
b = r;
}
return a; //a,b의 최대공약수
}
//최대 공배수 = a*b/최대공약수
static int lcm(int a, int b){
return a*b/gcd(a,b);
}
}
Reference
この問題について([Ava]Programmers N個の最大公倍数(Math)), 我々は、より多くの情報をここで見つけました https://velog.io/@jodawooooon/Java-Programmers-N개의-최대공배수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol