programmer-最大公倍数と最小公倍数
14929 ワード
問題の説明
2つの数を入力し、2つの数の最大公約数と最小公約数の関数を返し、解を完了します.アレイの先頭にある最大公約数、次に最小公約数を返します.例えば、2つの数3および12の最大承諾数は3であり、最小公倍数は12であるため、ソリューション(3、12)は[3、12]を返さなければならない.
せいげんじょうけん
2つの数は1以上1000000以下の自然数です.
I/O例説明
I/O例#1
上記のように.
I/O例#2
自然数2と5の最大承諾数が1であり、最小公倍数が10であるため、[1,10]を返さなければならない.
function solution(n, m) {
let answer = [];
let min;
let max;
let i;
let a = 2;
function aliquot(number){
let arr = [];
i = number;
while(i >= 0){
if( number % i === 0){
arr.push(i);
}
i--;
}
return arr;
}
if(m >= n){
if( m % n === 0){
min = m;
}else{
while(a){
if( (m * a) % n === 0){
min = m * a;
break;
}
a++;
}
}
for( let j = 0; j < aliquot(n).length; j++){
if( m % aliquot(n)[j] === 0){
max = aliquot(n)[j];
break;
}
}
}else{
if( n % m === 0){
min = n;
}else{
while(a){
if( (m * a) % n === 0){
min = m * a;
break;
}
a++;
}
}
for( let j = 0; j < aliquot(m).length; j++){
if( n % aliquot(m)[j] === 0){
max = aliquot(m)[j];
break;
}
}
}
return [max, min];
}
ああ...一度で解決できると思っていたが、明らかに混乱していた.function solution(n, m) {
const gcd = (m, n) => {
let r = (m % n);
return (r) ? gcd(n, r) : n;
}
return [gcd(m, n), ((m * n) / gcd(m, n))];
}
def solution(n, m):
mini = min(n, m)
print(mini)
li = []
for i in range(1, mini + 1):
if (n % i == 0) and (m % i == 0):
li.append(i)
gcd = max(li)
answer = [gcd, int((m * n) / gcd)]
return answer
Reference
この問題について(programmer-最大公倍数と最小公倍数), 我々は、より多くの情報をここで見つけました https://velog.io/@skkfea07/programmers-최대공약수와-최소공배수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol