ALGO-444 求和问题

157 阅读1分钟

「这是我参与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; 
}

总结

争取明天十点前更文,保质保量更文😂
预告,明天刷题难度比今天上一个台阶😁