javascriptのif文とfor文を使って最大公約数を出してみたい

今まで自分が勉強してきたことを使って、最大公約数を出してみたいと思い考えました。とても長くなったので、短い書き方も勉強したいです。

URL先で、最大公約数求められます。
https://app.u-chop.com/gcd/

javascript

function gcd() {
	var aa = document.getElementById("a").value;
	var bb = document.getElementById("b").value;
	var divisorA = [];
	var divisorB = [];
	var commonDivisor = [];
		

	for(var i = 0; i <= aa; i++) {
		if(aa % i === 0) {
			divisorA.push(i);
		}
	}

	for(var h = 0; h <= bb; h++) {
		if(bb % h === 0) {
			divisorB.push(h);
		}
	}
		
	for(var d = 0; d < divisorA.length; d++) {
		for(var e = 0; e < divisorB.length; e++) {
			if(divisorA[d] === divisorB[e]) {
				commonDivisor.push(divisorA[d]);
			}
		}
	}
		
	var gcd = commonDivisor[commonDivisor.length - 1];

	document.getElementById("p").innerHTML = gcd;
}

html

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>最大公約数</title>
</head>

<body>
    <form>
		<input type="text" id="a">
		<input type="text" id="b">
    </form>
    <button onclick="gcd()">最大公約数を求める</button>
    <p id="p"></p>
    <script src="script.js"></script>
</body>
</html>

javascript

var aa = document.getElementById("a").value;
var bb = document.getElementById("b").value;
var divisorA = [];
var divisorB = [];
var commonDivisor = [];

ボックスに入力された数字をそれぞれ変数aa と変数bb に代入する(1,2行目)
入力された数字の約数を入れる配列をつくる(3,4行目)
入力された数字の公約数を入れる配列をつくる(5行目)

for(var i = 0; i <= aa; i++) {
	if(aa % i === 0) {
		divisorA.push(i);
	}
}

変数 i が変数aa 以下の時は繰り返す。一周するごとに変数 i に1を足す。
もし、aa / i のあまりが 0 であるなら、配列divisorA に i を代入する。
(例)
① divisorA.push(1) → divisorA = [1];
② divisorA.push(2) → divisorA = [1,2];

for(var d = 0; d < divisorA.length; d++) {
	for(var e = 0; e < divisorB.length; e++) {
		if(divisorA[d] === divisorB[e]) {
			commonDivisor.push(divisorA[d]);
		}
	}
}

2つの数の約数を比べた時に、同じであれば配列commonDiisor に代入する
(例)10 と 5 の場合
divisorA = [1,2,5,10];
divisorB = [1,5];
commonDivisor = [1,5];

var gcd = commonDivisor[commonDivisor.length - 1];

配列commonDivisor の一番最後に入れた数を代入する


短いjavascriptで最大公約数を出す

短いjavascriptで最大公約数をどのように出しているのか考えました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です