分解因數
阿新 • • 發佈:2017-10-04
problem cst 正整數 並且 for 時間 span 多少 一個
時間限制: 1000 ms 內存限制: 65536 KB
分解因數
鏈接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1200
時間限制: 1000 ms 內存限制: 65536 KB
【題目描述】
給出一個正整數a,要求分解成若幹個正整數的乘積,即a = a1 * a2 * a3 * ... * an,並且1<a1<=a2<=a3<=...<=an,問這樣的分解的種數有多少。註意到a=a也是一種分解。
【輸入】
第1行是測試數據的組數n,後面跟著n行輸入。每組測試數據占1行,包括一個正整數a(1<a<32768)。
【輸出】
n行,每行輸出對應一個輸入。輸出應是一個正整數,指明滿足要求的分解的種數。
【輸入樣例】
2 2 20
【輸出樣例】
1 4
題解:保證前一個因數小於後一個因數
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int f[40000],a[40000]; int k=0; int prime(){ for(int i=2;i<40000;i++) for(int j=i+i;j<40000;j+=i) a[j]=1; } void find(int n,intm){ if(n==1){ k++;return; } for(int i=m;i<=n;i++) if(n%i==0)find(n/i,i); } int main(){ int t; cin>>t; prime(); for(int i=1;i<1000;i++)f[i]=1; while(t--) { int n; k=0; cin>>n; find(n,2); cout<<k<<endl;; } }
分解因數