Sumdiv

问题描述

的所有约数之和

问题分析

质因数分解,表示为(其中都是质数)

那么

的所有约数为集合,其中

根据乘法分配律,的所有约数的和就是

有关质因数分解和约数的内容将在后面详细介绍。

上述式子中每个括号中的内容都是等比数列,如果使用等比数列求和公式,就需要用到除法。但是答案要对取模,取模运算只对加、减、乘有分配率,不能直接对分子、分母分别取模后再做除法。我们可用换一种思路,使用分治法进行等比数列求和。

问题:使用分治法求

为奇数:

为偶数,同理有:

每次分治(递归)之后,问题规模均会缩小一半,配合快速幂即可在的时间内求出等比数列。

代码如下: