階乘分解 製作字典解決

2021-10-09 09:56:37 字數 1984 閱讀 3721

/*問題d:

階乘分解

題目描述

輸入正整數n (2#define _crt_secure_no_warnings

#include

#include

intis_prime

(int i)

for(

int j =

2; j*j < i+

1; j++)}

return1;

}int

main()

;/*n<=100;用可以將二維陣列裡的元素都初始化為0;

prime[0][100]儲存質數列表;

prime[1][100]儲存計數情況,各個元素充當各個質數的計數器*/

/*填充質數列表*/

for(

int i =

2, j =

0; i <

100; i++)}

/*處理多組輸入:*/

while

(scanf

("%d"

,&n)

!=eof

)int bak =0;

/*back-up 備份.*/

/*階乘的各個因子分別進行質數因子拆分,使得問題規模分攤在各相似的子問題上*/

for(

int i =

2; i <= n;i++

)else

}//for

}//for

/*列印*/

for(

int i =

0; prime[0]

[i]<= n && prime[0]

[i]>

0&& i <

100;

/*僅第乙個條件還不夠,無法處理99之類的大數;大於n的素數必定會出現在n!的因子中,它們比》=1(因為它們質數還不可以被分解,哪些非1(>1)的是某些合數因子被分解為對應質因子的結果.;i<100是為了保證不列印陣列越界後的亂七八糟的數*/

i++)printf

("\n");

}}/*彩蛋*/

/*int s = 1; long long 是_int64 */

///*這種做法的弊端是有時long long 都難以裝下(規模和大的時候)*/

//for (int i = 1; i <= n; i++)

//*/

//for (int i = 2; s > 0;)

//// if (s % i == 0 && is_prime(i) )

// // else

// // cnt = 0;

// i++;

// }

//}//for

ac版:

#include

#include

#include

intisprime

(int n)

else}}

return1;

}//dui

intmain()

;int i =

0,j =0;

for(i =

0;i<

100;i++)}

//dui

int n =0;

while

(scanf

("%d"

,&n)

!=eof

)//dui

for(

int i =

2;i<=n;i++

)else

}//for

}//for

printf

("%d!= "

,n);

for(

int i =

0;prime[0]

[i]<=n && prime[1]

[i]>

0;i++)}

printf

("\n");

}//while

}

問題 A 階乘分解

題目描述 給定整數n 1 n 10 6 試把階乘n 分解質因數,按照算術基本定理的形式輸出分解結果中的pi和ci即可。輸入乙個整數n。輸出n 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pi ci項。按照pi從小到大的順序輸出。樣例輸入 複製樣例資料 5樣例輸出 2 33 1 5 1提...

階乘分解 (素數)

題目 給定整數 n 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 pipi 和 cici 即可。輸入格式 乙個整數n。輸出格式 n 分解質因數後的結果,共若干行,每行一對pi,cipi,ci,表示含有pciipici項。按照pipi從小到大的順序輸出。資料範圍 1 n 1061 ...

階乘因式分解

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 給定兩個數n,m,其中m是乙個素數。將n 0 n 2 31 的階乘分解質因數,求其中有多少個m。注 為求冪符號。輸入 第一行是乙個整數s 0 輸出輸出m的個數 樣例輸入 3 100 5 16 2 1000000000 13 樣例...