如何在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)因此请帮忙!
答案 0 :(得分:3)
要扩展我的评论,(3*n*n+3*n-1) % 5 == 0
有两种情况,即
n = 5 * m + 1
n = 5 * m + 3
m
整数。
所以事实上你不需要计算很长时间,你可以直接使用n
,甚至从不计算3 * n * n + 3 * n - 1
。
请检查:
n % 5 == 1 || n % 5 == 3