1. 程式人生 > >分解因數

分解因數

problem cst 正整數 並且 for 時間 span 多少 一個

分解因數

鏈接: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,int
m){ 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;; } }



分解因數