九九で計算できる数値かどうかを判定する


前提

とある数値が入力されたとして、その数値が九九(1-9までの掛け算表)で計算が可能な数値かを判定します。
もし入力された値が計算可能であれば Yes と出力し、計算不可能であれば No と出力します。
言語は JavaScript です。

コード


function Main(input) {
  input = parseInt(input);
  let canBeCaluculated = "No";

  for (i = 1; i <= 9; i++) {
    for (j = 1; j <= 9; j++) {
      if (i * j === input) {
        canBeCaluculated = "Yes";
      } else {
        break;
      }
    }
  }
  console.log(canBeCaluculated)
}

Main(10); // => YES
Main(300); // => NO

解説

やり方は2通り考えられます。

  1. 九九を全て試して入力値と同じものがあれば Yes を出力
  2. 入力値を1-9まで順番に除算していき、割り切れてかつ商が1以上9以下の整数であれば Yes を出力

今回は1でやりました。 for 文で掛ける側と掛けられる側を回して、入力値と同じであれば Yes に変更してループを抜けるようにしています。

2のほうがスマートですし、計算回数も少ないので処理も速いですが、九九(合計81回の評価)しか行わないのであれば誤差です。
処理方法を迷ったときはなるべく簡単な方を選ぶように、、(自戒)