【发布时间】:2014-09-13 10:46:34
【问题描述】:
如何在 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)除以那个因素,所以请帮忙!
【问题讨论】:
-
它永远不能被 2 整除,因为
3*n*n是奇数或3*n-1是奇数。它也永远不能被 3 整除。只剩下 5 个。 -
是
if(gg4%5==0)gg4=gg4/2打错了吗? -
范围是个问题。 10^10 需要 ~33 位,所以 n*n 需要 ~66 位。
标签: c++ long-integer modulo factorization