是否可以计算一个整数的除数,而不必检查每个除数直到sqrt(n)
?如果不是,是否至少有一种方法可以估计或近似有多少除数?
例如,28具有六个除数(1、2、4、7、14、28)。15有四个(1,3,5,15)。比如说,我想弄清楚242134575355654335549798955848371716626563756785有多少除数,而不需要一直计算到这个数字(或者至少做一个猜测并从中得出)。
如果一个数字的素数分解是已知的
N = p1^e1 * p2^e2 * ... * pn^en
除数为(e1+1)*(e2+1)* ... *(en+1)
例如242134575355654335549798955848371716626563756785=5*448426915071130867109959791169674343325312751357具有4个除数
高一号242134575355654335549798955848371716563756786=2*101203*757790982862309619*15786423235504300177689649具有16个除数。
有一些可用的算法可以找到一个数的素数因子分解,其速度比sqrt(n)
的试除法快得多。对于大数字来说,还需要一段时间。。。
有一种方法可以比sqrt(N)更快地分解一个数字,但如果N<10^7条件成立。方法使用Eratosthenes筛。这是一个很好的解释,我也从中吸取了教训。你可以要求我澄清。