题意

在遥远的米♂奇♂妙♂妙♂屋里住着一群自然数,他们没事就喜欢拆♂开自己来探♂究。现在他们想知道自己最多能被拆分成多少个不同的自然数,使得这些自然数相乘的值等于被拆分的数。

输入描述

第1行输入一个整数T,代表有T组数据。
第2-T+1行,每行输入一个整数n,代表需要被拆分的数。
数据保证:0<T≤100,0<n≤109。

输出描述

输出一共T行,第i行输出一个整数,代表第i行输入的n最多可以被拆分成多少个不同的自然数。

解析

拆分的话就直接穷举,直接从最小的开始穷举,从一开始穷举到n,但是很明显从某一个位置开始后面的穷举就没有必要了。

除了1以外,所有的数都存在一个小于的值,所以我们只要考虑遍历到就行

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(void){
    ios::sync_with_stdio(false);
    ll n,ans=0,t;
    cin>>t;
    while(t--){
        ans=0;
        cin>>n;
        for(int i=1;i*i<n;++i){
            if(n%i==0){
                ans++;
                n/=i;
            }
        }
        cout<<ans+1<<endl;
    }
    return 0;
}