题意
在遥远的米♂奇♂妙♂妙♂屋里住着一群自然数,他们没事就喜欢拆♂开自己来探♂究。现在他们想知道自己最多能被拆分成多少个不同的自然数,使得这些自然数相乘的值等于被拆分的数。
输入描述
第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; }