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

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 - 还要检查包含最后两位数字和第一位数字、最后一位数字和前两位数字的一对,并相应增加“计数”的值。

示例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整除。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程