計算能被 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 整除。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP