[白俊]#1934最小公倍数
📝 質問する
2つの自然数AとBについて、Aの倍数でありBの倍数である自然数をAとBの公倍数と呼ぶ.この公倍数の中で最小の数を最小公倍数と呼ぶ.例えば、6及び15の公倍数は30、60、90等であり、最小公倍数は30である.
2つの自然数AとBが与えられた場合、AとBの最小公倍数を求めるプログラムを作成してください.
入力
第1行は、試験例の個数T(1≦T≦1000)を与える.2行目からT行にまたがり、AとBが与えられる.(1 ≤ A, B ≤ 45,000)
💻 しゅつりょく
1行目から、T行入力AとBの最小公倍数の順に1行ずつ出力します.
📃 入力例
3
1 45000
6 10
13 17
📃 サンプル出力
45000
30
221
🔍マイコード
package com.focusonmx.baekjoon.CodeplusBasicMath;
import java.util.Scanner;
public class B1934 {
static int N;
static int a;
static int b;
static int GCD;
static int LCM;
public static int Euclidean(int a, int b) {
int r;
while(b!=0) {
r=a%b;
a=b;
b=r;
}
return a;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
N= sc.nextInt();
for(int i=0;i<N;i++) {
a= sc.nextInt();
b=sc.nextInt();
GCD=Euclidean(a,b);
LCM=(a/GCD)*(b/GCD)*GCD;
System.out.println(LCM);
}
}
}
📖 学識
ユークリッドアークほう
2つの正の整数あるいは2つの多項式の最大の公因数の方法を求めます
2つの正の整数a,b(a>b)a,b(a>b)a,b(a>b)について
a=bq+r (0≤rすなわち、a、ba、ba、bの最大承諾数は、b、rb、rb、rの最大承諾数に等しい.
つまり.
gcd(a, b)=gcd(b, r)gcd(a,b)=gcd(b,r).r=0\gcd\left(a,\b\right)=\gcd\left(b,\r\right)gcd(a, b)=gcd(b, r). r=0gcd(a, b)=gcd(b, r)gcd(a,b)=gcd(b,r).r=0
もしそうなら、a,ba,ba,bの最大公約数はbbbになります.
例(12345および1234の最大公約数)
2つの数の最大承諾数は1です.
複文
def Euclidean(a, b):
while b != 0:
r = a % b
a = b
b = r
return a
複文
def Euclidean(a, b):
r = b % a
if r == 0:
return a
else:
return Euclidean(r, a)
時間の複雑さを考慮して、できるだけ複文を書かないでください.Reference
この問題について([白俊]#1934最小公倍数), 我々は、より多くの情報をここで見つけました https://velog.io/@focusonmx/백준-1934최소공배수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol