hdoj GCD 2588 (欧拉函数)
2015-11-06 22:20
330 查看
GCD
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1373 Accepted Submission(s): 633
[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
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.
[align=left]Output[/align]
For each test case,output the answer on a single line.
[align=left]Sample Input[/align]
3
1 1
10 2
10000 72
[align=left]Sample Output[/align]
1
6
260//题意:让求gcd(x,n)>=m;的数的个数。
#include<stdio.h> #include<string.h> #include<math.h> long long ehpi(long long n) { long long ans=n; long long m=sqrt(n+0.5); for(int i=2;i<=m;i++) if(n%i==0) { ans=ans/i*(i-1); while(n%i==0) n/=i; } if(n>1) ans=ans/n*(n-1); return ans; } int main() { int t; long long n,m; scanf("%d",&t); while(t--) { scanf("%lld%lld",&n,&m); long long cnt=0; for(int i=1;i<=sqrt(n);i++) { if(n%i) continue; if(i>=m) cnt+=ehpi(n/i); if(n/i>=m&&i*i!=n) cnt+=ehpi(i); } printf("%lld\n",cnt); } return 0; }
相关文章推荐
- Android之路——第一步:Activity之间切换(Intent、点击事件)
- SDWebImage中的- (void)sd_setImageWithURL:(NSURL *)url方法分析
- war文件
- ecshop多规格属性设置的的方法(如:一个商品多个颜色,尺寸,大小...)
- android开发之欢迎界面
- win7 64位下安装delphi xe3及破解
- 我的QT5学习之路(目录)
- python字符串格式化--dict传参
- 下载:SQL Server 2016 CTP3 (x64) - DVD (English)
- Linux下的惨痛教训=>LTS
- 专治linux不服——vbox 安装增强工具 建立共享目录
- HTML5-Canvas画布的使用
- 不使用全局函数如何编写线程类
- C++:类的定义及初始化问题
- 记录学习python装饰器
- POSTGRESQL 并发控制
- 约瑟夫环(报数出列)问题
- [读书笔记]高性能js-数据访问
- Java内存回收机制(第一讲)
- 自定义View---怎么解决View的滑动冲突