1、编写函数fn:计算并输出给定整数n的所有因于之和(不包括1与自身)。注意:n的值不大于1000。
例如:n的值为855时,应输出704。
可以一起讨论讨论找我呦
#include <iostream>
using namespace std;
int fn(int n)
{
if (n <= 2) return 0;
int sum = 0;
for (int i = 2; i < n; i++)
{
if (n % i == 0) sum += i;
}
return sum;
}
int main()
{
int n;
cin >> n;
cout << fn(n) << endl;
}
int sum=0;
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
sum+=i;
if(i*i!=n)
sum+=n/i;
}
}
cout<<sum;
可以编写如下的 C++ 代码实现:
#include <iostream>
using namespace std;
int fn(int n) {
if (n <= 2) {
// 如果 n 小于等于 2,那么不存在因数,应该返回 0
return 0;
}
int sum_of_divisors = 1; // 先将 1 加入到所有因数之和中
for (int i = 2; i <= n/2; i++) {
// 在 [2, n/2] 的区间内枚举可能的因数
if (n % i == 0) {
// 如果 n 可以被 i 整除,那么 i 是 n 的一个因数,加入到总和中
sum_of_divisors += i;
}
}
return sum_of_divisors;
}
// 测试代码
int main() {
cout << fn(855) << endl; // 输出:704
return 0;
}
这个函数通过一个循环在 [2, n/2]
的范围内枚举可能的因数。如果某个数 i
能够整除 n
,那么它就是 n
的一个因数,在这里将其累加到总和中。最终返回总和即可。
需要注意的是,由于题目要求不包括 1 和自身,所以处理时需要特别处理 n <= 2
的情况,否则会认为 n 的因数之和为 1(这是错误的)。