标签:des style blog io ar color os sp for
2 1 1 2 3
1 5
#include<cstdio> #define LL long long int p[10],top; void getp(int v){ top=0; for(int i=2;i*i<=v;i++){ if(v%i==0){ p[top++]=i; while(v%i==0) v/=i; } } if(v>1)p[top++]=v; } LL nop(int n,int t){ int i; LL num=0; for(i=t;i<top;i++) num+=n/p[i]-nop(n/p[i],i+1); return num; } int main(){ int t,m,n,i; LL sum; scanf("%d",&t); while(t--){ scanf("%d%d",&m,&n); sum=n; for(i=2;i<=m;i++){ getp(i); sum+=(n-nop(n,0)); } printf("%lld\n",sum); } }
#include<cstdio> #define LL long long int prime[100005][20]; int cnt[100005]={0}; void Init(){ for(int i=2;i<=100000;i++){ if(cnt[i]) continue; prime[i][0]=i; cnt[i]=1; for(int j=2;j*i<=100000;j++) prime[i*j][cnt[i*j]++]=i; } } LL dfs(int m,int n,int idx){ LL ret=0; for(int i=idx;i<cnt[m];i++) ret+=n/prime[m][i]-dfs(m,n/prime[m][i],i+1); return ret; } int main(){ Init(); int t,n,m; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); LL ans=n; for(int i=2;i<=m;i++) ans+=(n-dfs(i,n,0)); printf("%I64d\n",ans); } return 0; }
标签:des style blog io ar color os sp for
原文地址:http://blog.csdn.net/hpuhjl/article/details/41889277