演算法 整數因子分解問題

2021-09-27 02:23:29 字數 922 閱讀 7356

h(n)為n的劃分數

h(1) = 1

h(2) = 1

h(n) = h(n/2) + h(n/3) + ... + h(n/n) 前提是能被整除

整數因子分解問題

time limit: 1000 ms memory limit: 65536 kib

problem description

大於1的正整數n可以分解為:n=x1x2…xm。例如,當n=12 時,共有8 種不同的分解式:

12=12;

12=62;

12=43;

12=34;

12=322;

12=26;

12=232;

12=22*3。

對於給定的正整數n,計算n共有多少種不同的分解式。

input

輸入資料只有一行,有1個正整數n (1≤n≤2000000000)。

output

將計算出的不同的分解式數輸出。

sample input

12sample output

8

解題思路:遞迴進行逐個搜尋,每次進行求模=0 即為分解數,遞迴此數直到為1即可累計個數加1.

#include using namespace std;

int cnt=0;//計數

void f(int n) }}

int main()

{ int n;

cin>>n;

f(n);

cout結果:128

整數因子分解問題

problem description 大於1的正整數n可以分解為 n x1 x2 xm。例如,當n 12 時,共有8 種不同的分解式 12 12 12 6 2 12 4 3 12 3 4 12 3 2 2 12 2 6 12 2 3 2 12 2 2 3。對於給定的正整數n,計算n共有多少種不同的...

整數因子分解問題

home contests experiments problems status ranklist logout 整數因子分解問題 time limit 1000 ms memory limit 65536 kib submit statistic problem description 大於1的...

整數因子分解問題

time limit 1000 ms memory limit 65536 kib submit statistic problem description 大於1的正整數n可以分解為 n x1 x2 xm。例如,當n 12 時,共有8 種不同的分解式 12 12 12 6 2 12 4 3 12 ...