c++ - 如何在C++中检查一个很长的数字的整除性?

标签 c++ long-integer modulo factorization

如何在 C++ 中检查很长的数字的整除性? 我必须检查 (3*n*n+3*n-1) 是否能被 2 、 3 和 5 整除 并且 n 最多可达 10^ 10 所以 long long int可疑工作,尽管我已经尝试这样做:

unsigned long long int gg4,l;
gg4=(3*n*n+3*n-1);
if(gg4%3==0){
    gg4=gg4/3;
}
if(gg4%2==0){
    gg4=gg4/2;
}
if(gg4%5==0){
    gg4=gg4/2;
}

但我想这不会工作,因为 n 的范围,所以请帮忙! :)

此后我还需要(3*n*n+3*n-1)除以该因子,所以请帮忙!

最佳答案

为了扩展我的评论,有两种情况 (3*n*n+3*n-1) % 5 == 0,即

  • n = 5 * m + 1
  • n = 5 * m + 3

对于m一个整数。

所以实际上你不需要计算 long 任何东西,你可以直接使用 n,甚至不需要计算 3 * n * n + 3 * n - 1 首先。

只需检查:

n % 5 == 1 || n % 5 == 3

关于c++ - 如何在C++中检查一个很长的数字的整除性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25822430/

相关文章:

c++ - 在模块之间传递对象的替代方法

C - int 和 long 具有相同的大小和最大值

ruby :能被 4 整除

java - 如何从我的数学运算中删除模数?

c++ - 对于非重复项,最有效的标准容器是什么?

c++ - 使用释放 EXE 调试 DLL

algorithm - 如何在文本文件中找到 N 最长的行并将它们打印到标准输出?

c - 为什么我不能以长数据类型存储我的数据?

c - 对于非零 "(a/b)*b + a%b - a",表达式 'b' 在 C 中如何始终为零?

c++ - 模板子类覆盖父类的虚函数