lefafengderen 发表于 2019-11-1 15:53:48

因子求和

题目描述
已知一个正整数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:03:28

本帖最后由 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 的数值。

lefafengderen 发表于 2019-11-1 16:10:39

jackz007 发表于 2019-11-1 16:03
利用 for 循环,在 2 ~ n - 1 的范围内,按照从小到大的顺序,枚举每一个整数 i,如果 n 除以 ...

超时呀!

jackz007 发表于 2019-11-1 16:24:33

lefafengderen 发表于 2019-11-1 16:10
超时呀!

      "超时" 是何意?

Charles未晞 发表于 2019-11-2 15:20:04

int fun(int n)
{
    int s = 0, i;
    for(i=2; i<n; i++)
      if (n%i==0) s = s + i;
    return s;
}

python万 发表于 2019-11-3 14:57:09

我来水一水
页: [1]
查看完整版本: 因子求和