練習 求完數問題

2022-03-11 23:17:45 字數 1065 閱讀 9618

題目:

乙個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如,6的因子為1、2、3,而6=1+2+3,因此6是「完數」。程式設計序找出1000之內的所有完數,並按下面格式輸出其因子:

6     its    factors     are   1     2     3

原帖:**評析與重構——求完數問題

下面是我的**,思想不多說,貪心演算法。

//

#include #include #include #define divisers_max_length (1024)

#define top (10000)

int main(void)

; int divisers_count = 0;

/* 要判斷的數 */

int number;

int sum;

/* 指定 i的最大值, */

int i_max;

int i ;

int diviser;

for(number = 2; number < (top + 1) ; ++number )

divisers[divisers_count] = i;

diviser = number/i;

sum += i;

++ divisers_count;

if (diviser != i)

if (sum > number) break;

}} /* 下面是輸出 */

if (sum == number)

/*這個因為是倒敘輸出,陣列可能不是偶數,所以要判斷開始的位置

i的開始的位置應該是:

i = (count -1 )- ( -((count-1) -(i-2)) +1 )

化簡後

i = 2*count -i -1;

*/for (i = 2*divisers_count -i -1; i > 2; i-=2 )

printf("\n");

} }/* 結束了。。。*/

printf("end\n");

}

(求因子)hdu1406 完數

problem description 完數的定義 如果乙個大於1的正整數的所有因子之和等於它的本身,則稱這個數是完數,比如6,28都是完數 6 1 2 3 28 1 2 4 7 14。本題的任務是判斷兩個正整數之間完數的個數。input 輸入資料報含多行,第一行是乙個正整數n,表示測試例項的個數,...

問題 E 完數與盈數

時間限制 1 sec 記憶體限制 32 mb 提交 73 解決 69 提交 狀態 討論版 命題人 外部匯入 乙個數如果恰好等於它的各因子 該數本身除外 子和,如 6 3 2 1,則稱其為 完數 若因子之和大於該數,則稱其為 盈數 求出2 到60 之間所有 完數 和 盈數 並以如 下形式輸出 e e1...

求1000以內的完數(python)實現

求完數,首先確定什麼是完數 乙個數等於其所有因子之和的數就叫完數。自頂向下設計方法 特點 先整體後區域性,先抽象後具體 編寫演算法求1000以內的完數,並按下面的格式輸出其因子 28 it s factors are 1,2,4,7,14。def main n int input 請輸入n的值 fo...