程式碼示例:
/*一個數如果恰好等於它的因子之和,這個數就稱為“完數”。例如 6=1+2+3,
程式設計找出 1000 以內的所有完數。 */
#include <stdio.h>
#include <time.h>
int main(void)
{
static int k[10]; // 定義一個靜態整型陣列
int i, j, n, s;
for (j = 2; j < 100000; j++) // j 是所求範圍內的所有數,目的:找出完數
n = -1; // n 是 k[10] 數組裡的下標
s = j; // 將 j 賦值 給 s, 用 s 來做一系列的篩選判斷
for (i = 1; i < j; i++) // 在 j 數字的範圍內再遍歷一次數字,目的:找出因子
if ((j % i) == 0) // 第一道篩選: 找出 數字 j 的因子
n++; // n++ 以後 n 等於 0
// 第二道篩選 : 找出 s = 0
s = s - i;
//假設 s=j=1或者2或者3或者6, i 遍歷到了 1或者2或者3或者6,s 就會等於 0
k[n] = i; // k[0] = 1, k[1] = 2, k[2] = 3
}
if (s == 0) // 上面的 for 迴圈結束以後才執行 這個 if 語句
printf("%d is a PerfectNumber:", j);
for (i = 0; i < n; i++)
printf("%d,", k[i]);
printf("%d\n", k[n]);
printf("\nThe duration is %lf s.\n", ((double)clock()/CLOCKS_PER_SEC));
return;
程式碼示例:
/*一個數如果恰好等於它的因子之和,這個數就稱為“完數”。例如 6=1+2+3,
程式設計找出 1000 以內的所有完數。 */
#include <stdio.h>
#include <time.h>
int main(void)
{
static int k[10]; // 定義一個靜態整型陣列
int i, j, n, s;
for (j = 2; j < 100000; j++) // j 是所求範圍內的所有數,目的:找出完數
{
n = -1; // n 是 k[10] 數組裡的下標
s = j; // 將 j 賦值 給 s, 用 s 來做一系列的篩選判斷
for (i = 1; i < j; i++) // 在 j 數字的範圍內再遍歷一次數字,目的:找出因子
{
if ((j % i) == 0) // 第一道篩選: 找出 數字 j 的因子
{
n++; // n++ 以後 n 等於 0
// 第二道篩選 : 找出 s = 0
s = s - i;
//假設 s=j=1或者2或者3或者6, i 遍歷到了 1或者2或者3或者6,s 就會等於 0
k[n] = i; // k[0] = 1, k[1] = 2, k[2] = 3
}
}
if (s == 0) // 上面的 for 迴圈結束以後才執行 這個 if 語句
{
printf("%d is a PerfectNumber:", j);
for (i = 0; i < n; i++)
printf("%d,", k[i]);
printf("%d\n", k[n]);
}
}
printf("\nThe duration is %lf s.\n", ((double)clock()/CLOCKS_PER_SEC));
return;
}