寻找最大真因数,累加即可

#include <iostream>
using namespace std;

long long min_prime(long long x){
    if(x%2==0)return 2;
    for(long long i=3;i*i<=x;i+=2){
        if(x%i==0)return i;
    }
    return x;
}
int main() {
    long long n;
    cin>>n;
    long long sum=0;
    while(n>0){
        sum+=n;
        if(n==1)break;
        long long p=min_prime(n);
        n/=p;
    }
    cout<<sum<<endl;
}