如何在 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/