JavaScript 程序计算可被 8 整除的旋转次数

PHPz
PHPz 转载
2023-09-03 10:05:08 925浏览

JavaScript 程序计算可被 8 整除的旋转次数

问题陈述 - 我们给出了一个数字。我们需要旋转该数字,并需要找到能被 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 - 另外,检查包含最后两位数字和第一位数字、最后一位数字和前两位数字的对,并相应地增加“计数”的值。 p>

示例 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 整除的数字的最后三位。

以上就是JavaScript 程序计算可被 8 整除的旋转次数的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:tutorialspoint,如有侵犯,请联系admin@php.cn删除