记得要开ll
/*莫比乌斯反演模板题,也可以直接算phi来做容斥的解法求x[1..m],在[1,n]中和其互质的数的个数即可那么就是n-和x不互质的数个数即可 */#include#include using namespace std;#define maxn 100005#define ll long long vector fac[maxn];ll n,ans;void init(){ //质因子分解,埃氏筛 for(int i=2;i<=100000;i++){ if(fac[i].size())continue; fac[i].push_back(i); for(int j=2;j*i<=100000;j++) fac[i*j].push_back(i); }}//枚举的m,在m的质因子里的位置pos,当前的因数num,步长 void dfs(int m,ll pos,ll num,int cnt){ //cout< <<'\n'; if(num>n)return; if(pos==fac[m].size())return; if(cnt%2)ans+=n/num; else ans-=n/num; for(int i=pos+1;i >t;while(t--){ cin>>m>>n; ans=n;//x==1时 for(int i=2;i<=m;i++)dfs(i,-1,1,1); cout< <