我想知道,一旦运行我的代码,我怎么能加上显示的除数?
#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?
答案 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。