#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e5;
typedef long long ll;
int gcd(int a,int b){
return !b?a:gcd(b,a%b);
}
ll n,ans=0,a[maxn];
int main(){
scanf("%lld",&n);
for(int i=n;i>=1;i--){
//cout<<ans<<endl;
a[i]=(n/i)*(n/i);
for(int j=2;;j++){
if(j*i>n) break;
else a[i]-=a[j*i];
}
ans+=a[i]*i;
}
cout<<ans<<endl;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e5;
typedef long long ll;
int gcd(int a,int b){
return !b?a:gcd(b,a%b);
}
ll n,ans=0,a[maxn];
int main(){
scanf("%lld",&n);
for(int i=n;i>=1;i--){
//cout<<ans<<endl;
a[i]=(n/i)*(n/i);
for(int j=2;;j++){
if(j*i>n) break;
else a[i]-=a[j*i];
}
ans+=a[i]*i;
}
cout<<ans<<endl;
return 0;
}

本文介绍了一种用于计算一个整数范围内所有整数的质因数个数总和的算法,并提供了完整的C++实现代码。该算法通过预处理和递归调用实现了高效的质因数计数。

4461

被折叠的 条评论
为什么被折叠?



