其实这个题目完全可以暴力解决
直接附代码,毕竟签到题
#include<stdio.h> #include<math.h> long long f(long long n) { long long sum=0; for(long long i=1;i<=sqrt(n*1.0);i++) //自行百度为啥可以开根号,i记得用long long ,否则会爆 { if(n%i==0) if(i*i!=n) //若不等说明i*另外一个属=n,所以+2 sum+=2; else //如果i*i=n说明只能多一个因数 sum++; } return sum; } int main() { long long n; int sum=0; scanf("%lld",&n); while(n!=2) { sum++; n=f(n); } printf("%d\n",sum); return 0; }