JavaScriptで各桁が左隣の桁で割り切れるかを判定する方法
問題
数値を受け取り、その各桁が左隣(ひとつ前)の桁で割り切れるかどうかを判定し、真偽値(boolean)の配列として返すJavaScript関数を作成する必要があります。
最初の桁にはそれより前に桁が存在しないため、返される配列の先頭は必ず false となります。
実装例
以下がそのコードです。
const num = 73312;
const divisibleByPrevious = (n = 1) => {
const str = n.toString();
const arr = [false];
for(let i = 1; i < str.length; ++i){
if(str[i] % str[i-1] === 0){
arr.push(true);
}else{
arr.push(false);
};
};
return arr;
};
console.log(divisibleByPrevious(num));
コードのポイント
n.toString()で数値を文字列に変換し、インデックス指定で各桁にアクセスできるようにしています。- 結果を格納する配列
arrは[false]で初期化します。これは最初の桁に対応する要素です。 - 2桁目以降では
str[i] % str[i-1] === 0により「現在の桁 ÷ 左隣の桁」の剰余が 0 かどうかを調べ、割り切れればtrue、そうでなければfalseを追加します。
出力結果
[ false, false, true, false, true ]
この例では、数値 73312 の各桁を順番に評価しています。「3 ÷ 7」は割り切れないため false、次の「3 ÷ 3」は割り切れるため true、続く「1 ÷ 3」は再び false、そして最後の「2 ÷ 1」はすべての数が 1 で割り切れるため true となっています。
-
JavaScriptで指定した範囲内にある「ある数で割り切れる数」の個数を求める方法
問題2つの整数からなる範囲(配列)を第1引数に、1つの数値を第2引数として受け取るJavaScript関数を作成する必要があります。この関数は、指定された範囲内に存在する「入力された数値で割り切れる数」をすべて見つけ、その合計個数を返します。サンプルコード以下がその実装例です。const range = [6, 57]; const num = 3; const findDivisibleCount = (num = 1, [l, h]) => { let count = 0; for(let i = l; i <= h; i++
-
Xで割り切れる最大のK桁の数を求めるC++プログラム
2つの整数 X と K が与えられます。ここで K は桁数を表します。この問題の目的は、Xで割り切れる最大のK桁の数を見つけることです。入力:X = 30, K = 3 出力:980考え方出力例の 980 は、30で割り切れる最大の3桁の数です。この問題は次の手順で解くことができます。まず、10 の K 乗から 1 を引くことで、K桁の数の最大値(MAX)を求めます。例:K = 3 の場合、10³ − 1 = 999次に、MAX を X で割った余り(MAX % X)を MAX から引きます。これにより、Xで割り切れる最大のK桁の数が得られます。余りを引くという操作により、MAX 以下でかつ