题解
【入门】因子求和
1 条题解
-
0
解题思路
因子通常成对出现,只枚举到平方根,把两个成对因子加入答案,并排除1和n。
参考代码
#include <iostream> using namespace std; int main() { long long n, sum = 0; cin >> n; // 因子总是成对出现,只检查到平方根就够了。 for (long long i = 2; i * i <= n; i++) { if (n % i == 0) { // i是一个因子,同时把与它成对的因子也加上。 sum += i; if (i * i != n) sum += n / i; } } // 1和n不属于题目要求的因子,所以没有加入。 cout << sum; return 0; }复杂度分析
代码只使用了简单变量、循环和字符串。设输入长度为 n,时间复杂度为 O(n^2)(若有嵌套枚举则按实际循环计算),额外空间复杂度为 O(n)。
- 1