#include <iostream> using namespace std; //核心在于将 N 分解为若干个大于等于 2 的整数的乘积,使得这些整数的和(即总成本)最小。通过数学分析可知,将 N 分解为质因数的乘积时,总成本最小。这是因为质因数是不可再分的最小因数,进一步分解会导致成本增加。 bool judge(int x) { if(x<=1) return false; if(x==2) return true; if(x%2==0) return false; for(int i=3;i*i<=x;i+=2) { if(x%i==0) return false; } return true; } int main() { int n,sum=0; cin>>n; for(int i=2;i<=n;i++) { if(judge(i)) { while(n%i==0) { n/=i; sum+=i; } } else continue; } cout<<sum<<endl; } // 64 位输出请用 printf("%lld")