博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Jobdu] 题目1493:公约数
阅读量:5069 次
发布时间:2019-06-12

本文共 1162 字,大约阅读时间需要 3 分钟。

题目描述:

给定两个正整数a,b(1<=a,b<=100000000),计算他们公约数的个数。

如给定正整数8和16,他们的公约数有:1、2、4、8,所以输出为4。

输入:

输入包含多组测试数据,每组测试数据一行,包含两个整数a,b。

输出:

对于每组测试数据,输出为一个整数,表示a和b的公约数个数。

样例输入:
8 1622 16
样例输出:
42

五星级题目,其实就是考察对程序的优化,公约数的约数肯定也是他们的公约数!我们只要遍历从找1到sqrt(gdc)的公约数就行,注意这里要加上2!因为在sqrt(x)到x区间还有一个约数!还有就是注意边界特例!

1 #include 
2 using namespace std; 3 4 int gcd(int a, int b) { 5 int m = a > b ? a : b; 6 int n = a > b ? b : a; 7 return n == 0 ? a : gcd(n, m % n); 8 } 9 10 int main() {11 int a, b;12 int max;13 int count;14 int i;15 while (cin >> a >> b) {16 count = 0;17 max = gcd(a, b);18 for (i = 1; i * i < max; ++i) {19 if (max % i == 0)20 count += 2;21 }22 if (i * i == max) 23 ++count;24 cout << count << endl;25 26 }27 return 0;28 }29 /**************************************************************30 Problem: 149331 User: hupo25032 Language: C++33 Result: Accepted34 Time:30 ms35 Memory:1520 kb36 ****************************************************************/

 

 

转载于:https://www.cnblogs.com/easonliu/p/3657334.html

你可能感兴趣的文章
WIN下修改host文件并立即生效
查看>>
十个免费的 Web 压力测试工具
查看>>
ckeditor 粘贴后去除html标签
查看>>
面试题
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
数据库框架的log4j日志配置
查看>>
lintcode-easy-Remove Element
查看>>
mysql重置密码
查看>>
jQuery轮 播的封装
查看>>
一天一道算法题--5.30---递归
查看>>
switchcase的用法
查看>>
React.js 小书 Lesson15 - 实战分析:评论功能(二)
查看>>
Java基础03 构造器与方法重载
查看>>
kafka的使用
查看>>
编写Nginx启停服务脚本
查看>>
这些老外的开源技术养活了很多国产软件
查看>>
看图软件推荐
查看>>
安全测试的一些漏洞和测试方法
查看>>
spring框架学习笔记(八)
查看>>
JS取得绝对路径
查看>>