数论经典题POJ 1845的数学内核:因子和与等比求和的优雅舞蹈
在算法竞赛的浩瀚题海中,POJ 1845 Sumdiv以其简洁的题目描述和深厚的数学内涵,成为检验选手数论功力的试金石。这道题要求计算A^B的所有因子之和模9901的结果,表面看是一道普通的模运算题,实则暗藏数论中两个经典概念的完美邂逅——整数唯一分解定理与等比数列求和的巧妙结合。
1. 从暴力枚举到数学洞察
初遇这道题,不少人的第一反应可能是暴力枚举所有因子再求和。但当A和B的范围达到5×10^7时,这种O(√(A^B))的算法显然不堪重负。真正的突破口在于发现:
因子的和本质上可以转化为质因数幂次的组合问题
假设A=12,B=2,那么12^2=144。144的标准分解式为2^4 × 3^2。根据整数唯一分解定理,144的所有因子必然形如2^a × 3^b,其中0≤a≤4,0≤b≤2。因此,因子和可以表示为:
code复制(2^0 + 2^1 + 2^2 + 2^3 + 2^4) × (3^0 + 3^1 + 3^2)
这正是两个等比数列的乘积!这个观察将原问题分解为三个子问题:
- 对A进行质因数分解
- 对每个质因数p^k,计算1+p+p²+...+p^(k×B)
- 将所有质因数对应的等比数列和相乘
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 整数唯一分解定理:数论的基石
整数唯一分解定理(又称算术基本定理)指出:任何大于1的整数都可以唯一地表示为质数的幂次乘积。用数学表达式表示为:
code复制n = p₁^a₁ × p₂^a₂ × ... × p_k^a_k
其中p_i是质数,a_i是正整数。这个定理为我们提供了计算因子和的钥匙:
- 因子个数公式:(a₁+1)(a₂+1)...(a_k+1)
- 因子和公式:σ(n) = ∏(p_i^(a_i+1)-1)/(p_i-1)
在POJ 1845中,我们需要计算的是σ(A^B)。根据幂的性质:
code复制A^B = (p₁^a₁ × p₂^a₂ × ... × p_k^a_k)^B = p₁^(a₁B) × p₂^(a₂B) × ... × p_k^(a_kB)
因此,因子和公式变为:
code复制σ(A^B) = ∏[p_i^(a_iB+1)-1]/(p_i-1)
