38 lines
749 B
C++
38 lines
749 B
C++
|
|
|||
|
#include<cstdio>
|
|||
|
using namespace std;
|
|||
|
int Euler(int n){
|
|||
|
int m=n;
|
|||
|
for(int i=2;i*i<=n;i++){
|
|||
|
if(n%i==0)//<2F><>һ<EFBFBD><D2BB><EFBFBD>ҵ<EFBFBD><D2B5>ı<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
m-=m/i;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> i,2i,3i,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(m/i)*i
|
|||
|
while(n%i==0)
|
|||
|
n/=i;//<2F>Ѹ<EFBFBD><D1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>Լ<EFBFBD><D4BC>
|
|||
|
printf("(%d:%d)",i,m);
|
|||
|
}
|
|||
|
}
|
|||
|
if(n>1) //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ,Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n
|
|||
|
m-=m/n;
|
|||
|
return m;
|
|||
|
}
|
|||
|
int main(){
|
|||
|
int T;
|
|||
|
scanf("%d",&T);
|
|||
|
int N,M;
|
|||
|
while(T--){
|
|||
|
scanf("%d%d",&N,&M);
|
|||
|
long long sum=0;
|
|||
|
for(int i=1;i*i<=N;i++){//ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD>ʡʱ<CAA1><CAB1>
|
|||
|
if(N%i==0){
|
|||
|
if(i>=M) sum+=Euler(N/i);//iΪN<CEAA><4E>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>1<=i<=<3D><><EFBFBD><EFBFBD>n<EFBFBD><6E>
|
|||
|
if((N/i)!=i&&(N/i)>=M) sum+=Euler(i);//(N/i)<29><>N<EFBFBD><4E>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>(N/i)>=<3D><><EFBFBD><EFBFBD>N
|
|||
|
|
|||
|
printf("%d:%d\n",i,sum);}
|
|||
|
}
|
|||
|
printf("%lld\n",sum);
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|