关于题目 无尽大军 的疑惑
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
ll getans()
{
ll ans=0;
ll k=sqrt(n);
ll now=n;
for(int i=2;i<=k&&now>0;i++){
if(now%i==0){
while(now%i==0){
now/=i;
ans+=i;
}
}
}
if(now>1)ans+=now;
return ans;
}
int main()
{
cin>>n;
cout<<getans()<<endl;
return 0;
using namespace std;
typedef long long ll;
ll n;
ll getans()
{
ll ans=0;
ll k=sqrt(n);
ll now=n;
for(int i=2;i<=k&&now>0;i++){
if(now%i==0){
while(now%i==0){
now/=i;
ans+=i;
}
}
}
if(now>1)ans+=now;
return ans;
}
int main()
{
cin>>n;
cout<<getans()<<endl;
return 0;
}
我看不懂这段代码的逻辑诶。。。有人可以指点我一下么 这个自定义函数为什么这么写