如何检查c+中超长数的整除性+;? 如何检查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; }

如何检查c+中超长数的整除性+;? 如何检查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; },c++,long-integer,modulo,factorization,C++,Long Integer,Modulo,Factorization,但我想这不起作用,因为n的范围很广,所以请帮忙!:) 在此之后,我还需要将(3*n*n+3*n-1)除以该因子,因此请帮助 为了扩展我的评论,有两种情况下(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 它永远不会被2整除,因为3*n*n是奇数,或者3*n-1是奇数。它也永远不会被3整除。如果

但我想这不起作用,因为n的范围很广,所以请帮忙!:)


在此之后,我还需要将(3*n*n+3*n-1)除以该因子,因此请帮助

为了扩展我的评论,有两种情况下
(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

它永远不会被2整除,因为
3*n*n
是奇数,或者
3*n-1
是奇数。它也永远不会被3整除。如果(gg4%
5
=0)gg4=gg4/
2
mistype?范围存在问题,则只剩下5.is
。10^10占用~33位,因此n*n占用~66位。那么,设置的作业是错误的?谁会想到呢。所以只要检查最后一个数字是
1
3
6
8