#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,k;
cin>>n>>k;
long long cnt=0;
long long kk=n;
long long mm,ans=0;
while(n!=1)
{
mm=sqrt(n);
if(mm*mm!=n&&k-cnt>0&&mm!=1)
{
ans+=(k-cnt-1);
}
n=mm;
cnt++;
}
//cout<<cnt<<endl;
ans+=min(cnt,k)+k+1;
if(kk==1)
ans=1;
cout<<ans<<endl;
}
为什么这里要ans+=(k-cnt-1)呢?