因子求和
题目描述已知一个正整数N(20 <= N <= 800000000),请你编写程序求出该数的全部因子(不包括1)的和。
输入
N
输出
一个整数(因子和)
样例输入
24
样例输出
35
提示
24的因子有: 2、3、4、6、8、12,其和为 35
//总是超时 以下是我的代码:
#include <stdio.h>
int main()
{
int n,i,sum=0;
scanf("%d",&n); //输入整数
for(i=2;i<n;i++)
if(n%i==0)//判断是否为其因子
sum+=i;//累加起来
printf("%d\n",sum);//输出
}
求大佬解答 本帖最后由 jackz007 于 2019-11-1 16:08 编辑
#include <stdio.h>
int main()
{
int n , i , sum = 0 ;
scanf("%d" , & n) ; // 输入整数
for(i = 2 ; i < n ; i ++) {
if(n % i == 0) { // 如果 n 可以被 i 整除
sum += i ; // 就把 i 累加到 sum 中
}
}
printf("%d\n" , sum) ; // 输出 sum
}
利用 for 循环,在 2 ~ n - 1 的范围内,按照从小到大的顺序,枚举每一个整数 i,如果 n 除以 i 的余数为 0 (n % i == 0),那么,i 便是 n 的一个因子,把它加到 sum 里,最后,在循环结束后,打印出 sum 的数值。
jackz007 发表于 2019-11-1 16:03
利用 for 循环,在 2 ~ n - 1 的范围内,按照从小到大的顺序,枚举每一个整数 i,如果 n 除以 ...
超时呀! lefafengderen 发表于 2019-11-1 16:10
超时呀!
"超时" 是何意? int fun(int n)
{
int s = 0, i;
for(i=2; i<n; i++)
if (n%i==0) s = s + i;
return s;
} 我来水一水
页:
[1]