Math 05最小公倍数(1934)
Math 05最小公倍数(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行ずつ出力します.
に答える
ゲートタイムアウト
もちろん正しい
ユークリッド号製法とは、
数字a,bがある場合、aをbの残りとbで割った最大公約数は、aとbの最大公約数が等しいことを意味する.
では、aをbで割って、bをaで割った残りの部分をbに代入し続けます.
bが0に繰り返されると、残りのa値が最大公約数となる.
コード#コード#
import sys
sys.stdin = open("input.txt","rt")
def input():
return sys.stdin.readline().rstrip()
N = int(input())
def gcd(a, b):
while b > 0:
a, b = b, a % b
return a
def lcm(a, b):
return a * b / gcd(a, b)
# (최소공배수 x 최대 공약수) = `gcd^2 * m * n [m, n은 서로수]` => a * b
# 최소공배수는 a, b의 곱을 a, b의 최대 공약수로 나누면 나오게 된다.
for i in range(N):
a, b = map(int,input().split())
print(int(lcm(a,b)))
#유클리드 호제법이란,
#숫자 a, b가 있을 때, a를 b로 나눈 나머지와 b 의 최대 공약수 는 a 와 b 의 최대 공약수 가 같다는 것을 의미한다.
#그럼, 계속해서 a 를 b로 나누어서 b를 a에 나눈 나머지를 b 에 대입시켜서
# b 가 0이 될때 까지 반복을하면, 남는 a 값이 바로 최대 공약수 이다.
学識
ユークリッドアークほう
コメント
Reference
この問題について(Math 05最小公倍数(1934)), 我々は、より多くの情報をここで見つけました https://velog.io/@angel_eugnen/Math05최소공배수1934テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol