求两个整型数字的最大公约数问题
2009-03-31 22:45
387 查看
Question
给出两个正的整型数字,m和n,求它们的最大公约数
Euclid Algorithm
第一步: 假设m>n,m除以n得到的余数为r
第二步: 如果r=0,那么n就是最大公约数,结束,否则第三步
第三步: m<-n, n<-r 跳到第一步
给出两个正的整型数字,m和n,求它们的最大公约数
Euclid Algorithm
第一步: 假设m>n,m除以n得到的余数为r
第二步: 如果r=0,那么n就是最大公约数,结束,否则第三步
第三步: m<-n, n<-r 跳到第一步
#include <stdio.h> #include <stdlib.h> #include <assert.h> struct testSuit { unsigned int max; unsigned int min; unsigned int gDivisor; } testData[] = { { 50U, 40U, 10 }, { 100, 50U, 50 }, }; unsigned int getGreatestDivisor(unsigned int a, unsigned int b); int main ( int argc, char *argv[] ) { printf("50 40 %u/n", getGreatestDivisor(50U, 40U)); return EXIT_SUCCESS; } unsigned int getGreatestDivisor(unsigned int a, unsigned int b) { unsigned int r; unsigned int max, min; assert(a != 0 && b != 0); max = (a > b) ? a : b; min = (max == a) ? b : a; r = max % min; while ( r ) { max = min; min = r; r = max % min; } return min; }
相关文章推荐
- 9.在数学计算或数字分析中,经常会用到计算两个数的最大公约数的问题。即:输入两个正整数,当两个数字有一个不是正整数时会产生异常。当输入非整数数字时,也产生异常。输入无错误后,可计算两个数的最大公约数。
- 用java实现欧几里得算法求两个数字的最大公约数
- 高精度计算:最大公约数【两个数字字符串】
- 第2章 数字之魅——最大公约数问题
- leetcode 365. Water and Jug Problem 两个水杯倒水问题 + 最大公约数Gcd辗转相除法
- 编程之美: 第二章 数字之魅 2.7最大公约数问题
- 数字问题之最大公约数问题全解法归纳<Java实现>
- 【最大公约数、最小公倍数】输入两个数字,分别求最大公约数和最小公倍数
- 求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法
- 《编程之美》求两个大整数的最大公约数问题的一般解法
- C++/C经典算法百题--(39-42)年龄几何,三色球问题,两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
- 辗转相除法求两个非负数的最大公约数问题
- 使用三种算法解决从键盘输入两个整数,输出两个整数的最大公约数的问题
- HDOJ(HDU) 2503 a/b + c/d(最大公约数问题)
- 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。(C语言)
- 输入两个数求他们的最大公约数
- 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。(java)
- 求取两个整数的最大公约数算法
- 两个有序的整型数组,求最大的共有整数序列。
- 给定两个数m,n,使用欧几里得的辗转相除法求出它们的最大公约数