C编程:如何加上整数n的除数

时间:2018-02-17 03:44:33

标签: c

我想知道,一旦运行我的代码,我怎么能加上显示的除数?

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n, i;
    scanf("%d", &n);

    for(i = 1; i < n; i++)
    {
        if(n % i == 0)
        {
            printf("%d\n", i);
        }
    }
    return 0;
}

如果我要输入,比方说25,它会打印出1,5。我想知道如何将两个数字加1和5?

2 个答案:

答案 0 :(得分:5)

这可能就这么简单吗?您将需要使用简单的增量运算符( + = )来增加变量sum

int main(void)
{
    int n, i, sum = 0;
    if( scanf("%d", &n)!= 1){
        fprintf(stderr,"Error in input\n");
        exit(EXIT_FAILURE);
    }

    for(i = 1; i < n; i++)
    {
        if(n % i == 0)
        {
            printf("%d\n", i);
            sum += i;
        }
    }
    printf("Sum of divisors: %d\n", sum);
    return 0;
}

答案 1 :(得分:2)

  

如何加上整数n的除数?

n为某个高值时,与for(i = 1; i < n; i++)一样重复n次可能会花费很长时间,尤其是如果代码使用64位整数。相反,只迭代sqrt(n)次 - 更快

int factor_count(int number) {
  if (number <= 1) {
    return TBD_Code(number);  // OP needs to define functionality for these cases.
  }
  int sum = 1;
  int quotient;   
  int divisor = 1;
  do {
    divisor++;
    quotient = number/divisor;
    int remainder = number%divisor;
    if (remainder == 0) {
      sum += divisor;
      if (quotient > divisor) sum += quotient;
    }
  } while (divisor < quotient);
  return sum;
}

注意到其他改进here