C++程式中大數的37倍數判斷


在本教程中,我們將編寫一個程式來檢查給定的大數是否能被37整除。

我們將在這裡使用一些數學知識。讓我們看看解決問題的步驟。

  • 初始化數字。

  • 如果給定數字的長度不能被3整除,則在數字的開頭新增零,使其長度能夠被3整除。

  • 將數字分成3位一組,並將它們相加。

  • 如果得到的和能被37整除,則給定數字能被37整除。

  • 如果得到的和是4位數,則重複步驟2。

  • 列印給定數字是否能被37整除。

示例

讓我們看看程式碼。

 線上演示

#include <bits/stdc++.h>
using namespace std;
bool isNumberDivisibleBy37(string number, int n) {
   if (number == "0") {
      return 0;
   }
   if (n % 3 == 1){
      number = "00"+ number;
      n += 2;
   }
   else if (n % 3 == 2){
      number = "0"+ number;
      n += 1;
   }
   int groups_sum = 0;
   while (n != 0){
      string group = number.substr(n - 3, n);
      int group_value = (group[0] - '0') * 100 + (group[1] - '0') * 10 + (group[2] - '0') * 1;
      groups_sum += group_value;
      n = n - 3;
   }
   if (groups_sum >= 1000) {
      string new_number = to_string(groups_sum);
      return isNumberDivisibleBy37(new_number, new_number.length());
   }
   else {
      return groups_sum % 37 == 0;
   }
}
int main() {
   string number = "4048675309";
   if (isNumberDivisibleBy37(number, 10)) {
      cout << "Yes" << endl;
   }
   else {
      cout << "No" << endl;
   }
   return 0;
}

輸出

如果執行上述程式碼,則會得到以下結果。

Yes

結論

如果您在教程中有任何疑問,請在評論區提出。

更新於: 2021年1月28日

153 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.