題目1087 約數的個數

2021-07-26 14:39:48 字數 1360 閱讀 7565

題目描述:輸入n個整數,依次輸出每個數的約數的個數

輸入:輸入的第一行為n,即陣列的個數(n<=1000)

接下來的1行包括n個整數,其中每個數的範圍為(1<=num<=1000000000)

當n=0時輸入結束。

輸出:可能有多組輸入資料,對於每組輸入資料,

輸出n行,其中每一行對應上面的乙個數的約數的個數。

樣例輸入:

5

1 3 4 6 12

樣例輸出:

123

46

比較簡單的方法是將給定的資料n開方得m,遍歷m之前屬於n的約數的個數num,若m為整數,則約數的個數為2*num-1,否則為2*num。

此方法可參考

以下**是利用素數的性質,是最開始時想到的方法,比較麻煩。

下面第一部分是自己摸索不斷改正實現的,第二部分通過網上了解到約數個數定理學習實現的。

#include#define max 100001

bool mark[max];

int primesize = 0;

int prime[max];

void init() }}

int ansnum[max];

int buf[1000];

/*int main()

len++;

} if (buf[i] == 1)

break;

} if (buf[i] > 1)

ansnum[len++] = 1;

int ans = 1;

// printf("the len is %d\n", len);

for (int m = 0; m < len; m++)

ans += ansnum[m];

for (int m = 0; m < len; m++)

printf("%d\n", ans);

} }return 0;

}*///使用約數個數定理

int main()

len++;

}if (x == 1)

break;

}if (x > 1)

ansnum[len++] = 1;

int ans = 1;

for (int m = 0; m < len; m++)

ans = ans * (ansnum[m] + 1);

printf("%d\n", ans);

} }return 0;

}

題目1087 約數的個數

題目描述 輸入n個整數,依次輸出每個數的約數的個數 輸入 輸入的第一行為n,即陣列的個數 n 1000 接下來的1行包括n個整數,其中每個數的範圍為 1 num 1000000000 當n 0時輸入結束。輸出 可能有多組輸入資料,對於每組輸入資料,輸出n行,其中每一行對應上面的乙個數的約數的個數。樣...

九度oj 題目1087 約數的個數

鏈結 題目描述 輸入n個整數,依次輸出每個數的約數的個數 輸入 輸入的第一行為n,即陣列的個數 n 1000 接下來的1行包括n個整數,其中每個數的範圍為 1 num 1000000000 當n 0時輸入結束。輸出 可能有多組輸入資料,對於每組輸入資料,輸出n行,其中每一行對應上面的乙個數的約數的個...

九度OJ 題目1087 約數的個數

題目描述 輸入n個整數,依次輸出每個數的約數的個數 輸入 輸入的第一行為n,即陣列的個數 n 1000 接下來的1行包括n個整數,其中每個數的範圍為 1 num 1000000000 當n 0時輸入結束。輸出 可能有多組輸入資料,對於每組輸入資料,輸出n行,其中每一行對應上面的乙個數的約數的個數。樣...