豐富數字是一個小於其正確除數總和的自然數。例如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. –