C++ 中檢查大數是否能被 13 整除
在這裡,我們將瞭解如何檢查一個數是否能被 13 整除。在這種情況下,數字非常大。因此,我們將數字作為字串輸入。
如果數字滿足以下情況,則該數字可以被 13 整除:
- 當且僅當我們得到交替和(即從右到左交替加減三位數的塊)可以被 13 整除時,一個數才能被 13 整除。例如,2911285 可以被 13 整除,因為大小為 3 的塊的交替和為 2 – 911 + 285 = -650,該和可以被 13 整除。
- 當且僅當該數是由將最後一位數字乘以 4 加到其餘數字所形成的數也可以被 13 整除時,該數才能被 13 整除。例如,考慮 2353。應用上述規則,我們得到 235 + 3*4 = 247。在下一次迭代中,24 + 7*4 = 52。由於 52 可以被 13 整除,因此給定數字可以被 13 整除。
示例
#include <bits/stdc++.h>
using namespace std;
bool isDiv13(string num){
int length = num.size();
if (length == 1 && num[0] == '0')
return true;
if (length % 3 == 1) { //when length is not divisible by 3, remainder is 1
num +="00";
length += 2;
} else if (length % 3 == 2){ //when length is not divisible by 3, remainder is 2
num += "0";
length += 1;
}
int sum = 0, p = 1;
for (int i = length - 1; i >= 0; i--) {
int set = 0;
set += (num[i--] - '0');
set += (num[i--] - '0') * 10;
set += (num[i] - '0') * 100;
sum = sum + set * p;
p *= (-1);
}
sum = abs(sum);
return (sum % 13 == 0);
}
int main() {
string num = "83959092724";
if(isDiv13(num)){
cout << "Divisible";
} else {
cout << "Not Divisible";
}
}輸出
Divisible
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP