原题地址:https://ac.nowcoder.com/acm/contest/3002/E
解题思路
直接枚举,算法复杂度可以√n,利用STL中的set记录每个因子,保证不重复
AC代码
#include<iostream>
#include<cmath>
#include<set>
using namespace std;
typedef long long ll;
int main()
{
ll n;
scanf("%lld", &n);
ll ans = 0;
while (n > 2)
{
set<int> s;
ll m = sqrt(n);
for (int i = 1; i <= m; i++)
{
if(s.count(i)) continue;
if (n % i == 0)
{
s.insert(i);
s.insert(n/i);
}
}
n = s.size();
ans++;
}
cout << ans;
return 0;
}