Sumdiv
问题描述
求的所有约数之和
问题分析
把质因数分解,表示为(其中都是质数)
那么。
则的所有约数为集合,其中
根据乘法分配律,的所有约数的和就是
有关质因数分解和约数的内容将在后面详细介绍。
上述式子中每个括号中的内容都是等比数列,如果使用等比数列求和公式,就需要用到除法。但是答案要对取模,取模运算只对加、减、乘有分配率,不能直接对分子、分母分别取模后再做除法。我们可用换一种思路,使用分治法进行等比数列求和。
问题:使用分治法求
若为奇数:
若为偶数,同理有:
每次分治(递归)之后,问题规模均会缩小一半,配合快速幂即可在的时间内求出等比数列。
代码如下: