<分区>
我有一个大十进制数 N
(最多 100.000
位)我需要检查是否 N
可以除以2^X
或 5^X ( 0 < X < 5 )
.
bignumber % (2^x) == 0
我能得到小费吗?我不知道。
<分区>
我有一个大十进制数 N
(最多 100.000
位)我需要检查是否 N
可以除以2^X
或 5^X ( 0 < X < 5 )
.
bignumber % (2^x) == 0
我能得到小费吗?我不知道。
最佳答案
检查由最后 x 位数字组成的数字。如果它可以除以 2^x,那么所有数字也可以。 5^x 也一样。
原因是一个最后有 x 个零的十进制数总是可以被 2^x 或 5^x 除,因为它可以被 10^x 除。因此,我们可以忽略起始数字,只检查最后 x 个数字。
用于检查整除性用途
char* number; // here the source number is put
strcopy(ending, &number[strlen(number) - x]);
long CheckedNumber = atoi(ending);
long NewCheckedNumber;
int i=0;
while (i<x){
NewCheckedNumber = CheckedNumber / 5;
if ( NewCheckedNumber * 5 != CheckedNumber ) return 0;
CheckedNumber = NewCheckedNumber;
i++;
}
return 1;
关于algorithm - 如何检查大十进制数是否可以除以 2^x 或 5^x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44904752/