标签: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