杭电2588 GCD(欧拉函数+gcd的应用)
2014-09-16 11:49
281 查看
GCD
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1080 Accepted Submission(s): 492
Problem Description
The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b),is the largest divisor common to a and b,For example,(1,2)=1,(12,18)=6.
(a,b) can be easily found by the Euclidean algorithm. Now Carp is considering a little more difficult problem:
Given integers N and M, how many integer X satisfies 1<=X<=N and (X,N)>=M.
Input
The first line of input is an integer T(T<=100) representing the number of test cases. The following T lines each contains two numbers N and M (2<=N<=1000000000, 1<=M<=N), representing a test case.
Output
For each test case,output the answer on a single line.
Sample Input
3 1 1 10 2 10000 72
Sample Output
1 6 260/* x从1到N ,GCD(N,x)>=M的个数,用欧拉函数可以求出来1--N与N互质的个数,找到1--N中是N的约数且大于M的值x,1--N/x的欧拉函数值就是x--N之间比M大的个数,不太明白为什么不会重复,应该是因为x是N的约数吧 加油!!! Time:2014-9-16 11:44 */ #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int MAX=10000+10; int N,M; int num[MAX]; int Eular(int M){ int ans=M; int sq=M; for(int i=2;i*i<=sq;i++){ if(M%i==0){ ans=ans/i*(i-1); while(M%i==0)M/=i; } } if(M>1)ans=ans/M*(M-1); return ans; } void solve(){ int T; scanf("%d",&T); while(T--){ scanf("%d%d",&N,&M); int i,k=0; for(i=1;i*i<N;i++){if(N%i==0){ if(N/i>=M) num[k++]=i; if(i>=M) num[k++]=N/i; } } if(i*i==N&&i>=M){ num[k++]=i; } int ans=0; for(int i=0;i<k;i++) ans+=Eular(num[i]); printf("%d\n",ans); } } int main(){ solve(); return 0; }
相关文章推荐
- GCD HDU杭电2588 【欧拉函数的应用】
- hdu 2588 GCD 欧拉函数
- UVA11426 GCD - Extreme (II) 欧拉函数`扩展欧几里德应用
- HDU2588:GCD(欧拉函数的应用)
- hdu 2588 GCD---欧拉函数
- hdoj 2588 GCD 【欧拉函数 问题转换】
- HDU 2588 GCD------欧拉函数变形
- hdoj 2588 GCD(欧拉函数)
- NYOJ 998&& HDOJ2588 GCD (欧拉函数)
- HDOJ GCD 2588【欧拉函数】
- Uva11424 GCD - Extreme (I) 欧拉函数的应用
- GCD +hdu+欧拉函数的应用
- FZU 1969 数论 GCD+欧拉函数应用
- 2588 欧拉函数的应用
- SGU 102 Coprimes ---- 欧拉函数、素数的应用&&GCD水题
- HDU 2588 GCD(欧拉函数)
- HDU 2588 GCD (欧拉函数)
- HDU 2588 GCD【欧拉函数的运用】
- HDU 2588 GCD 【利用欧拉函数求约数个数】
- HDU 2588 GCD 欧拉函数