题意 把一个自然数尽可能拆成多个不同的自然数的乘积
本着能整除就整除的原则,从小到大枚举,如果有个小的数可以整除但不选他,情况1他是个质数,会使得少一个数,情况二,他是个和数,考虑把他拆了能不能变成两个或多个不同的数,拆了后的数一定比他小,从前面的能除就除可以发现不会有没除的情况,所以这个原则是正确的
#include<iostream> using namespace std; int main() { int t; cin>>t; while(t--) { int num,ans=0,f; cin>>num; for(int i=1;i<=num/i;i++) { if(num%i==0) { ans++; num/=i; f=i; } } if(num!=f)ans++; cout<<ans<<endl; } }