检查大量数字是否在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

以上是 检查大量数字是否在C ++中可以被13整除 的全部内容, 来源链接: utcz.com/z/338205.html

回到顶部