懵逼钨丝反演的一个好像很666的函数

设F[k]表示gcd(x,y)为k或k的倍数,设f[i]表示gcd(x,y)==i,如何求f[i]

那我们就可以直接套上下面的这个函数

好多题推出式子以后直接上下面这个函数就行

屡试不爽

代码:

 1 int cal(int n,int m,int k)
 2 {
 3     int ans=0;
 4     n/=k; m/=k;
 5     for(int l=1,r;l<=n&&l<=m;l=r+1)
 6     {
 7         r=min(n/(n/l),m/(m/l));
 8         ans+=(n/l)*(m/l)*(sum[r]-sum[l-1]);
 9     }
10     return ans;
11 }

猜你喜欢

转载自www.cnblogs.com/Slrslr/p/9571232.html