假设现在有两个自然数A和B,S是AB的所有约数之和。
请你求出S mod 9901的值是多少。
输入格式
在一行中输入用空格隔开的两个整数A和B。
输出格式
输出一个整数,代表S mod 9901的值。
数据范围
0≤A,B≤5×107
输入样例:
2 3
输出样例:
15
注意: A和B不会同时为0。
思路:可以将a用所有质因子的乘积表示,即:
a=p1^k1*p2^k2*...*pn^kn (pi为a的第i个质因子,ki为第i个质因子的个数)
a的所有约数可由这些质因子组合而成,所以每个质因子都可能有0~k(k+1)种次幂,所以按照组合的乘法原理乘起来一共可以组合成(k1+1)*(k2+1)*...*(kn+1)种不同的约数,每一个约数都是选择每个质因子的k种次幂中的一种,然后乘起来所得,所以约数之和即为:(p1^0+p1^1+.. +p1^k1)*(p2^0+p2^1+...+p2^k2)*...*(pn^0+pn^1+...pn^kn),从每个括号里选一项然后乘起来便组成一个约数,然后把上式乘开,就是所有约数之和的形式了。
所以,总结一下:
对于a=p1^k1*p2^k2*...*pn^kn (pi为a的第i个质因子,ki为第i个质因子的个数) :