題目:
乙個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如,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...