Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

ハーシャッド数JavaScriptを見つける


ハーシャッド数は、桁の合計で正確に割り切れる数です。126の数と同様に、1 + 2 + 6=9で完全に割り切れます。

  • 1桁の数字はすべてハーシャッド数です。

  • ハーシャッド数は、[1,2,3,4,5,6,7,8,9,10]、[110,111,112]、[1010、1011、1012]のような連続したクラスターに存在することがよくあります。

私たちの仕事は、入力がハーシャッド数であるかどうかをチェックするときに数値を受け取る関数を作成することです。そうでない場合は-1を返し、そうでない場合は連続するハーシャッドクラスターのストリークの長さを返します。

例-

harshadNum(1014) = harshadNum(1015) = harshadNum(1016) = harshadNum(1017) = 4
harshadNum(1) = 10
harshadNum(12) = 1
harshadNum(23) = -1

この問題を2つの主要な機能に分けてみましょう。

  • isHarshad()→ 数値numを受け取り、その数値が厳しいかどうかに応じてブール値を返します。

  • harshadNum()→ 実際の数値を受け取り、さまざまなポイントでisHarshad()を呼び出し、ストリークの長さを返すメイン関数。

isHarshad関数のコーディング-

const isHarshad = (num) => {
   let sum = 0, temp = num;
   while(temp){
      sum += temp % 10;
      temp = Math.floor(temp/10);
   }
   return num % sum === 0;
}

ブール値を返す非常に単純な反復関数

それでは、harshadNum()関数をコーディングしましょう-

const harshadNum = (number) => {
   //if the input is not harshad return -1
   if(!isHarshad(number)){
      return -1;
   }
   let streak = 1, prev = number-1, next = number+1;
   //check preceding streak
   while(isHarshad(prev) && prev > 0){
      streak++;
      prev--;
   }
   //check succeeding streak
   while(isHarshad(next)){
      streak++;
      next++;
   }
   return streak;
};
console.log(harshadNum(1014));

上記のコードを理解する-

  • 入力が過酷であるかどうかを確認し、そうでない場合は関数を停止して-1を返します;

  • harshadnumbersを取得し続けながら、1つのループを逆方向に実行し、1つを順方向に実行し、同時にストリークを更新し続けます

  • 最後にストリークを返します

以下は完全なコードです-

const isHarshad = (num) => {
   let sum = 0, temp = num;
   while(temp){
      sum += temp % 10;
      temp = Math.floor(temp/10);
   }
   return num % sum === 0;
}
const harshadNum = (number) => {
   //if the input is not harshad return -1
   if(!isHarshad(number)){
      return -1;
   }
   let streak = 1, prev = number-1, next = number+1;
   //check preceding streak
   while(isHarshad(prev) && prev > 0){
      streak++;
      prev--;
   }
   //check succeeding streak
   while(isHarshad(next)){
      streak++;
      next++;
   }
   return streak;
};
console.log(harshadNum(1014));

出力

コンソールでのこのコードの出力は-

になります
4

  1. JavaScriptで配列内の最初の連続していない番号を見つける

    問題 数値の配列を受け取るJavaScript関数を作成する必要があります。関数は、前の要素の自然な後継ではない配列から最初の要素を返す必要があります。 これは、配列にそのような要素が少なくとも1つ存在する場合、前の要素の+1ではない要素を返す必要があることを意味します。 例 以下はコードです- const arr = [1, 2, 3, 4, 6, 7, 8]; const findFirstNonConsecutive = (arr = []) => {    for(let i = 0; i < arr.length - 1; i++){  

  2. JavaScriptを使用して配列から唯一のアウトシーケンス番号を検索する

    問題 数値の配列を受け取るJavaScript関数を作成する必要があります。配列は昇順/昇順で並べ替えられ、配列内の1つの要素のみが順序どおりではありません。 関数はその要素を見つけて返す必要があります。 例 以下はコードです- const arr = [1, 2, 3, 4, 17, 5, 6, 7, 8]; const findWrongNumber = (arr = []) > {    for(let i = 0; i < arr.length - 1; i++){       const el = arr[i]; &