環境
問題
13195 の素因数は 5, 7, 13, 29 である.
600851475143 の素因数のうち最大のものを求めよ.
考え方
- 求めたい数を変数に入れる(ここでは、numとする)
numの平方数を算出し、整数値を取得する
*numの平方数以上のnumの約数は、numの平方数以下のnumの約数と対になっているため
numの平方数から 1 までの剰余を計算し、0の時を求める
- 2.で求めた数を、さらに 3 から 2. で求めた数の平方数までの剰余を計算する
- 割りきれた場合、その数は素数でないので、ループを離脱
- 割り切れる数がなかった場合、その数は素数なので、条件分岐用変数に true を代入
- ループの最後に、割り切れた数が素数がどうかをチェックする
コード
const question003 = () => { let num = 600851475143; let numSqrt = Math.floor(Math.sqrt(num)); let max = 1; let isSosu = false; for (let i = numSqrt; i > 1; i--) { if (num % i == 0) { for (let j = 3; j <= Math.floor(Math.sqrt(i)); j = j + 2) { if (i % j == 0) { isSosu = false; break; } else { isSosu = true; } } if (isSosu) { max = i; return max; } } if (isSosu) { break; } } return max; };