[白俊]1934:最小公倍数(JAVA)
8745 ワード
質問する
BOJ 1934:最小公倍数-https://www.acmicpc.net/problem/1934
に答える
ユークリッドアーク除算法を用いて2つの自然数a,bの最大公約数(GCD)を求め,2つの数の積を最大公約数(GCD)で除算すると最小公倍数(LCM)となる.
[ユークリッドアーク除算(Euclideanアルゴリズム)]
「2つの自然数の最大公約数(GCD)のアルゴリズムを求めます」
2つの自然数(または正式)a,bについて、aをbで割った残りの数をr(ただし、a>b)と呼ぶと、aおよびbの最大公約数はbおよびrの最大公約数に等しい.
GCD(a, b) = GCD(b, a%b)
です.bから0を再帰的に繰り返すと,aとbの最大承諾数を求めることができる.最小公倍数:
a * b / GCD(a,b)
数学部ではないので、合格したことを証明します.コード#コード#
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for(int i=0; i<n; i++){
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
bw.write(LCM(a,b)+"\n");
}
bw.flush();
}
public static int GCD(int a, int b){
if(b==0){
return a;
}
return GCD(b, a%b);
}
public static int LCM(int a, int b) {
return a * b / GCD(a, b);
}
}
整理する
✔ 알고리즘 분류 - 수학, 정수론, 유클리드 호제법
✔ 난이도 - ⚪ Silver 5
🤦♀️ 今日のショベルマン
GCD(a, b) = GCD(b, a%b)
を知っておく必要があります!コメントサイト
[ユークリッドのお守り]
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
Reference
この問題について([白俊]1934:最小公倍数(JAVA)), 我々は、より多くの情報をここで見つけました https://velog.io/@yanghl98/백준-1934-최소공배수-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol