在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

结论