[计算最大公因子]Finding the greatest common divisor (gcd) of 2 numbers
来源:互联网 发布:淘宝7个层级流量怎么样 编辑:程序博客网 时间:2024/05/27 14:14
Euclidean algorithm (Find gcd of two numbers)
An efficient method for finding the greatest common divisor was discovered by the ancient Greeks over two thousand years ago: it is called Euclid’s algorithm because it is spelled out in detail in Euclid’s famous treatise Elements
Euclid’s method is based on the fact that if u is greater than v then the greatest common divisor of u and v is the same as the greatest common divisor of v and u - v. This observation leads to the following implementation in C (gcd1).
The implementation in gcd1 can be improved by noting that, once u > v, we continue to subtract off multiples of v from u until reaching a number less than v. But this number is exactly the same as the remainder left after dividing u by v, which is what the modulus operator (%) computes: the greatest common divisor of u and v is the same as the greatest common divisor of v and u % v (gcd2).
#include <stdio.h>#include <time.h># ordinary methodint gcd1(int u, int v){ int t; while(u!=v) { if(u<v) v=v-u; else u=u-v; } return u;}#recursive versionint gcd2(int u, int v){ int t; if(v==0) return u; else return gcd2(v, u%v);}void main(){ int x,y; while(scanf("%d %d", &x, &y) != EOF) { if(x>0 && y>0) { clock_t start,end; start=clock(); printf("%d %d %d\n",x,y,gcd1(x,y)); end = clock(); double t1=end-start; start=clock(); printf("%d %d %d\n",x,y,gcd2(x,y)); end = clock(); double t2=end-start; printf("%lf %lf ratio=%lf\n", t1, t2, t1/t2); } }}
Note how much more efficient the modification is when, for example, finding the greatest common divisor of a very large number and a very small number. It turns out that this algorithm always uses a relatively small number of steps.
- [计算最大公因子]Finding the greatest common divisor (gcd) of 2 numbers
- Greatest Common Divisor(GCD) of Two Numbers
- 【HDU 5207】Greatest Greatest Common Divisor —— 最大公因子
- The greatest common divisor gcd(最大公约数)
- GCD (Greatest Common Divisor)
- The Greatest Common Divisor
- the greatest common divisor
- Calculate the Greatest Commom Divisor (GCD) and Lowest Common Multiple (LCP) of Two Integers
- GCD Algorithm(Greatest Common Divisor)
- P32 (**) Determine the greatest common divisor of two positive integer numbers.
- GCD (greatest common divisor)【求最大公约数】
- 求最大公约数Greatest Common Divisor(GCD)
- Euclid Greatest Common Divisor-GCD - 欧几里得 最大公约数
- Greatest Common Divisor (GCD) - Euclidean algorithm
- 最大公约数GCD(Greatest Common Divisor)算法小结
- sgu 499. Greatest Greatest Common Divisor(枚举因子)
- Greatest Greatest Common Divisor
- Greatest Greatest Common Divisor HD5207
- vnc远程工具的使用教程
- APP测试要点
- 存储总量达 20T 的 MySQL 实例,如何完成迁移?
- linux的SHELL编程
- js处理数据的一些方法
- [计算最大公因子]Finding the greatest common divisor (gcd) of 2 numbers
- 实时物体识别框架
- DB——数据的读取和存储方式
- RTP协议的报文头格式结构
- Spring与JBPM整合
- 使用 Swing 写 Java 程序的图形界面
- RTP协议之Header结构解析
- 机器学习---支持向量机(SVM)算法应用(上)
- 工作java工作总结