最大公约数
来源:互联网 发布:域名和url的区别 编辑:程序博客网 时间:2024/05/17 00:17
求最大公约数是程序中经常需要使用的,大部分人都知道可以使用辗转相除法来求得,但是因为需要使用取模运算,开销较大,那么有没有更好的方法呢?答案是肯定的。一下是代码:
#include<iostream>using namespace std;/*1、int GreatestCommonDivisor(int x, int y){return (!y) ? x : GreatestCommonDivisor(y, x%y);}*//*2、int GreatestCommonDivisor(int x, int y){if (x < y)return GreatestCommonDivisor(y, x);if (y == 0)return x;elsereturn GreatestCommonDivisor(y, x - y);}*/bool isEven(int x){return x & 0x1 ? false : true;}int GreatestCommonDivisor(int x, int y){//3、if (x < y)return GreatestCommonDivisor(y, x);if (y == 0)return x;else{if (isEven(x)){if (isEven(y)){return(GreatestCommonDivisor(x >> 1, y >> 1) << 1);}elsereturn GreatestCommonDivisor(x >> 1, y);}else{if (isEven(y))return GreatestCommonDivisor(x, y >> 1);elsereturn GreatestCommonDivisor(y, x - y);}}}int main(){int a, b;cin >> a >> b;cin.get();cout << "最大公约数为:" << GreatestCommonDivisor(a, b) << endl;cin.get();return 0;}
上文列出了三种方法,第三种的效率是最高的。(本文大部分代码来自《编程之美》我做了一些修改并实现了isEven()函数)
0 0
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- 最大公约数
- iOS中UIImageView 添加UITapGestureRecognizer后传参
- kafka centos 单点配置
- jstring 和char* 之间的转换方法
- 《Monkey Android》第11课Button和ImageButton
- [反重力与飞行]需要精确计算力场的数值
- 最大公约数
- 模仿360安全卫士项目笔记8
- 使用SAX解析XML文件
- 地图json   jquery
- 大数据框架Hadoop和Spark的异同
- VFS目录树
- 278. First Bad Version-LeetCode(查找第一个最坏版本)
- Android studio 自定义打包APK名称
- Mac环境下Android Studio jni开发调用 javah编译不了头文件问题