計算能被 8 整除的旋轉次數的 JavaScript 程式


問題陳述 − 給定一個數字,我們需要旋轉該數字,並找到能被 8 整除的旋轉總數。

在這裡,我們將學習兩種不同的方法來計算能被 8 整除的旋轉次數。

旋轉數字並檢查旋轉結果是否能被 8 整除

第一種方法是旋轉數字,逐個獲取所有可能的旋轉結果。同時,檢查旋轉結果是否能被 8 整除。如果是,則將計數加 1。

語法

使用者可以按照以下語法來計算透過旋轉數字得到的能被 8 整除的旋轉次數。

for ( ) {
   str = lastDigit + str.substring(0, str.length - 1);
   let num = parseInt(str);
   if (num % 8 == 0) {
      count++;
   }
}

在上述語法中,我們取數字字串的最後一位數字,並將其附加到字串的開頭,從而旋轉數字。

演算法

  • 步驟 1 − 將計數變數初始化為 0,表示初始計數為零。

  • 步驟 2 − 使用 for 迴圈遍歷數字字串,並將總旋轉次數設定為數字字串的長度。

  • 步驟 3 − 在 for 迴圈中,獲取數字字串的最後一位數字。同時,獲取包含前 n-1 位數字的子字串。

  • 步驟 4 − 將最後一位數字附加到子字串的開頭,以旋轉數字字串。

  • 步驟 5 − 使用 parseInt() 方法從字串中提取數字。

  • 步驟 6 − 檢查旋轉結果是否能被 8 整除。如果是,則將計數的值加 1。

  • 步驟 7 − 使用 for 迴圈檢查所有旋轉結果後,返回計數的值。

示例 1

在下面的示例中,rotationsDivisibleBy8() 函式將一個數字作為引數,並返回能被 8 整除的旋轉總數。此外,我們首先使用 toString() 方法將數字轉換為字串,然後實現上述演算法來計算能被 8 整除的旋轉次數。

<html>
<body>
   <h3> Program to find the total number of rotations divisible by 8 </h3>
   <div id = "output"> </div>
   <script>
      let output = document.getElementById('output');
      const rotationsDivisibleBy8 = (number) => {
         let count = 0;
         //Count rotations divisible by 8 by rotating numbers
         let str = number.toString();
         for (let i = 0; i < str.length; i++) {
         
            //Get the last character of the string
            let lastDigit = str[str.length - 1];
            
            // rotating number
            str = lastDigit + str.substring(0, str.length - 1);
            
            // convert string to integer
            let num = parseInt(str);
            
            //Check if num is divisible by 8
            if (num % 8 == 0) {
               count++;
            }
         }
         return count;
      }
      let number = 90645232432;
      output.innerHTML = "Total count of rotations divisible by 8 of " + number + " is " + rotationsDivisibleBy8(number);
   </script>
</body>
</html>

檢查三位數字對是否能被 8 整除

如果任何數字的最後三位數字能被 8 整除,我們可以說整個數字能被 8 整除。因此,在這裡我們可以取連續的三位數字對,並檢查該對是否能被 8 整除。如果是,則表示包含該三位數結尾的旋轉結果能被 8 整除。

語法

使用者可以按照以下語法來計算能被 8 整除的旋轉次數。

for ( ) {
   let pairOf3 = numStr.substring(i, i + 3);
   if (pairOf3 % 8 == 0) {
      count++;
   }
}

在上述語法中,我們使用了 substring() 方法來獲取三位數字對。

演算法

  • 步驟 1 − 使用 toString() 方法將數字轉換為字串。

  • 步驟 2 − 如果數字的長度等於 1,則如果數字能被 8 整除,則返回 1;否則,返回 0。

  • 步驟 3 − 如果數字的長度等於 2,則檢查兩個可能的旋轉結果中能被 8 整除的旋轉次數,並返回計數。

  • 步驟 4 − 對於超過 3 位數字的數字,使用 substring() 方法提取連續的三位數字對。之後,檢查該對是否能被 8 整除,並增加計數的值。

  • 步驟 5 − 同時,檢查包含最後兩位數字和第一位數字、最後一位數字和前兩位數字的對,並相應地增加“計數”的值。

示例 2

在下面的示例中,我們使用 for 迴圈和 substring() 方法來獲取 n-2 個三位數字對,並檢查它們是否能被 8 整除。在輸出中,使用者可以看到給定的數字包含總共 5 個能被 8 整除的旋轉結果。

<html>
<body>
   <h3> Program to find the total number of rotations divisible by 8 </h3>
   <div id = "output"> </div>
   <script>
      let output = document.getElementById('output');
      const rotationsDivisibleBy8 = (number) => {
         let count = 0;
         let numStr = number.toString();
         let n = numStr.length;
         if (n == 1) {
            // for 1 digit
            return number % 8 == 0 ? 1 : 0;
         }
         else if (n == 2) {
         
            // for 2 digits
            if (number % 8 == 0) {
               count++;
            }
            let temp = numStr.substring(1, 2) + numStr.substring(0, 1);
            if (temp % 8 == 0) {
               count++;
            }
            return count;
         }
         else {
         
            // for 3 digits
            for (let i = 0; i < n - 2; i++) {
               let pairOf3 = numStr.substring(i, i + 3);
               if (pairOf3 % 8 == 0) {
                  count++;
               }
            }
            
            // for last two and first digit
            let lastTwo = numStr.substring(n - 2, n);
            let firstDigit = numStr.substring(0, 1);
            let lastTwoFirstDigit = lastTwo + firstDigit;
            if (lastTwoFirstDigit % 8 == 0) {
               count++;
            }
            
            // for last digit and first two digits
            let lastDigit = numStr.substring(n - 1, n);
            let firstTwo = numStr.substring(0, 2);
            let lastDigitFirstTwo = lastDigit + firstTwo;
            if (lastDigitFirstTwo % 8 == 0) {
               count++;
            }
            return count;
         }
      }
      let number = 104104104104104;
      output.innerHTML = "Total count of rotations divisible by 8 of " + number + " is " + rotationsDivisibleBy8(number);
   </script>
</body>
</html>

使用者學習了兩種不同的方法來計算能被 8 整除的旋轉總數。在第一種方法中,我們獲取所有可能的旋轉結果,並檢查它們是否能被 8 整除。在第二種方法中,我們利用數字能被 8 整除的特性,即數字的最後三位數字必須能被 8 整除。

更新於:2023年4月20日

瀏覽量:105

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.