【发布时间】:2018-12-06 23:08:40
【问题描述】:
我有一道简单的数学题。我想在[2,N](不包括除数中的1和N)范围内找到一个除数之和最大的数字。例如,对于N = 100,2 到 100 之间除数之和最大的数字是 96,它的所有除数之和等于 155。
我编写了以下程序来显示该数字的除数之和,但无法弄清楚如何获得该数字本身。如何找到并打印该号码?
int main(int argc, char const *argv[])
{
int N,
sum,
max=0;
scanf("%d", &N);
int i = 0,
d = 0;
for(i=2; i<=N; i++)
{
sum=0;
for(d = 2; d < i; d++)
{
if(i % d == 0)
{
sum += d;
}
}
if(sum > max)
{
max = sum;
}
}
printf("%d\n", max);
return 0;
}
【问题讨论】:
-
能否请您添加一个数学示例来说明您的问题?我不明白它背后的数学任务。
-
完成了,这个例子可以理解吗?
-
谢谢,我明白了:1、2、3、4、6、8、12、16、24、32、48的总和为96
-
在http://www.positiveintegers.org/96 中,除数还包括数字 1,因此您应该尝试在代码的第二个循环中从 1 开始以获得总和 156,但是 1 不会改变区间 [2,N] 的最大值。
-
对不起!我忘了提到该算法不需要明确包含 N 和 1 作为除数
标签: c loops math arithmetic-expressions