「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」。
题目描述
问题描述
编写一个函数,函数名为factor_sum,形式参数是一个整数,函数返回值也是整数类型,该函数计算并返回形式参数的真因子之和。例如,对该函数的调用factor_sum(6)的返回值为6,即它的三个真因子1、2、3的和。
输入格式
输入一个整数n(2<=n<=1000)
输出格式
输出整数n的所有真因子的和
样例输入
6
样例输出
6
思路分析
首先第一个因子是在n的开方之内查找,可以降低时间复杂度
当这个数为n的因子时,再判断另一个因子是否相等或等于n本身
如果不是就累加到sum,一通暴力枚举就哦啦
AC代码
#include<bits/stdc++.h>
using namespace std;
int factor_sum(int n)
{
int sum=0;
for(int i=1;i<=sqrt(n);i++)
{
if(n%i==0)
{
sum+=i;
if(i!=n/i&&n/i!=n)//两因子不等且不是本身
sum+=n/i;
}
}
return sum;
}
int main()
{
int n;
cin>>n;
cout<<factor_sum(n);
return 0;
}
总结
争取明天十点前更文,保质保量更文😂
预告,明天刷题难度比今天上一个台阶😁