求约数之和:给出给定正整数n,求n的约数之和。输入一个整数n,输出一行一个整数表示答案。用C++编程
时间: 2024-09-17 14:02:01 浏览: 68
输入两个正整数m和n求其最大公约数和最小公倍数.docx
5星 · 资源好评率100%
在C++中,计算一个正整数n的所有约数之和可以使用循环遍历从1到sqrt(n)(取整),对于每个i,判断i是否是n的因子(即 n % i == 0),如果是,则将i和n/i(如果i不等于n/i)都加入结果,因为n = i * factor(factor也是约数)。这里是一个简单的示例代码:
```cpp
#include <iostream>
#include <cmath>
int sumOfDivisors(int n) {
int sum = 0;
for (int i = 1; i <= std::sqrt(n); ++i) {
if (n % i == 0) {
// 如果i是因子,那么它的对称因子(n / i)也是,除非i就是n本身
if (i != n / i)
sum += i + n / i;
else
sum += i; // 当i=n/i时只加一次
}
}
return sum;
}
int main() {
int n;
std::cout << "请输入一个正整数: ";
std::cin >> n;
std::cout << "该数字的约数之和是: " << sumOfDivisors(n) << std::endl;
return 0;
}
```
当你运行这个程序并输入一个正整数时,它会输出这个数所有约数的和。
阅读全文