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