定義\(f(n)\)爲\(n\)所含質因子的最大冪指數,如\(f(18)=f(2*3^2)=2\)
輸入T組數據,求\(\sum_{i=1}^{n} \sum_{j=1}^{m} f(gcd(i,j))\)的值
\(T<=10000,1<=a,b<=10^7\)ios
\[\sum_{i=1}^{n} \sum_{j=1}^{m} f(gcd(i,j))\]
\[=\sum_{T=1}^{min(n,m)} \lfloor \frac nT \rfloor \lfloor \frac mT \rfloor \sum_{d|T} f(d) \mu(\frac Td)\]ui
\(a_1,a_2,…,a_k\)並不全都相等
此時設\(a_x\)最大,對於全部包含\(p_x^{a_x}\)的\(d\)均有\(f(d)=a_x\)
對於這些\(d\),\(p_i(i \neq x)\)的指數的選擇均有兩個,爲\(a_i-1,a_i\),則一共能組合出\(2^{k-1}\)個不一樣的\(d\)
設其中\(d_1,d_2\)的質因子中除\(p_y\)一項以外的指數均相等,則\(\mu(d_1)=-\mu(d_2)\)
而這樣\(\mu\)值相反的\(d\)共有\(2^{k-2}\)組,各自相加後的和就爲0即
\[[\sum_{d|T,p_x^{a_x} |d} f(d) \mu(\frac Td) ]=0\]
以後對於剩下取\(p_x^{a_x-1}\)的\(d\) 執行一樣的分析,發現全部以\(a_q\)爲最大值的的\(d\)的和均爲0,因此此時\(g(T)=0\)spa
令\(A=a_1=a_2=…=a_k\)即\(a_1,a_2,…,a_k\)均相等
此時\(f(d)=\begin {cases} A(b_1,b_2,…,b_k中至少有一個值爲A)\\ A-1(b_1=b_2=…=b_k=A-1) \end {cases}\)
假設\(b_1=b_2=…=b_k=A-1\)的時\(d\) 值\(f(d)\)也爲A
則\(g(T)\)相似於上一種狀況的推導,其的和也爲0
固然,最後\(g(T)\)要減去某特殊\(d\)多加的\(1*\mu(\frac Td)\)
因此此狀況下\(g(T)=-(-1)^{k}=(-1)^{k+1}\)code
而線性求g(T),則須要記錄每一個點的最小質因子及個數,除去該最小質因子後的值
這裏就感性理解一下吧OvOhtm
#include <iostream> #include <cstdio> #include <cstring> #define N 10000010 using namespace std; int n,prim[N],pcnt,at[N],la[N],cnt[N];//at[i]記錄i的最小質因子,la[i]=記錄i除以全部at[i]後的值,cnt[i]記錄at[i]的數量 long long sum[N],g[N],f[N]; void eular() { g[1]=0; for(int i=2;i<=N-10;i++) { if(!at[i]) { prim[++pcnt]=i; at[i]=pcnt; g[i]=la[i]=cnt[i]=1; } for(int j=1;j<=at[i];j++) { if((long long)i*prim[j]>N-10)break; at[i*prim[j]]=j; if(j==at[i])//prim[j]爲i的最小質因子,即也爲prim[j]*i的最小質因子 { la[i*prim[j]]=la[i]; cnt[i*prim[j]]=cnt[i]+1; if(la[i]==1)g[i*prim[j]]=1; else g[i*prim[j]]=(cnt[i]+1==cnt[la[i]]?-g[la[i]]:0); } else//prim[j]爲新出現的質因子,個數爲1 { la[i*prim[j]]=i; cnt[i*prim[j]]=1; g[i*prim[j]]=(cnt[i]==1?-g[i]:0); } } sum[i]=sum[i-1]+g[i]; } } long long mb(int n,int m) { long long ans=0; if(n>m)swap(n,m); for(int l=1,r;l<=n;l=r+1) { r=min(n/(n/l),m/(m/l)); ans+=(sum[r]-sum[l-1])*(n/l)*(m/l); } return ans; } int main(){ eular(); int a,b,T; cin>>T; while(T--) { scanf("%d%d",&a,&b); printf("%lld\n",mb(a,b)); } return 0; }
\(\color{white}{神祕數字:4372wyx}\)blog