丰富数字是一个小于其正确除数总和的自然数。例如12 < 1+2+3+4+6=16
所以12是一个丰富的数字,而16 > 1+2+4+8=15
不是一个丰富的数字。 我必须用C语言写一个程序,这样对于输入k,输出都是大于或小于k的大数。用C语言嵌套for循环
我只是一个初学者,所以我最想做的是编写一个程序来检查k是否丰富。所以这是我做过什么:
#include <stdio.h>
int main(void) {
int k, i, s = 0;
scanf("%d", &k);
for (i = 1; i < k; i++) {
if (k % i == 0)
s = s + i;
}
if (k < s)
printf("%d" is an abundant number", k);
return 0;
}
随意上述忽视这一点,我只是想告诉你我其实我自己尝试过的东西。现在,我不知道如何使这个程序列表中的丰富数字,也低于k
,但我发现我不明白的解决方案:
#include <stdio.h>
int main(void) {
int k, i, j, s;
scanf("%d", &k);
for (i = 1; i <= k; i++) {
s = 0;
for (j = 1; j < i; j++) {
if (i % j == 0)
s = s + j:
}
if (i < s)
printf("%d"\n", i);
}
return 0;
}
我很困惑这个嵌套的for循环,有人可以解释它究竟是如何工作的?例如,如果我们把k = 18,这个for循环究竟发生了什么,所以最后我们得到12和18作为输出?
的单曲= S + J:' - 这看起来完全打破 – artm
外回路从1至18,包括。所以内部循环看起来像这样:for(j = 1; j <1; j ++)'第一次。(j = 1; j <2; j ++)',然后在for(j = 1; j <3; j ++)'后,它会到达for(j = 1; j < 12; j ++)'和'for(j = 1; j <18; j ++)'尝试在纸上运行它。 – OopsUser
您的第一个for循环中的所有内容都与您编写的用于检查数量是否丰富的程序相似。这个for循环运行这个代码,我的值从1到18. –