/*問題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 樣例...