辗转相除法 相减法 穷举法 求最大公约和最小公倍数
2015-03-10 18:29
134 查看
/* .编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。 例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4 */ #include<stdio.h> void main() /* 相除法求最大公约数 */ { int m, n, a, b, c; printf("输入两个整数:\n"); scanf_s("%d%d", &a, &b); m = a; n = b; while (b != 0) /* 余数不为0,继续相除,直到余数为0 */ { c = a%b; a = b; b = c; } printf("最小公倍数为:%d\n", m*n / a); }
void main ( ) /* 相减法求最大公约数 */ { int m, n, a, b, c; printf("Input two integer numbers:\n"); scanf ("%d,%d", &a, &b);m=a; n=b; /* a, b不相等,大数减小数,直到相等为止。*/ while ( a!=b) if (a>b) a=a-b; else b=b-a; printf("The largest common divisor:%d\n", a); printf("The least common multiple:%d\n", m*n/a); }
穷举法
有两整数a和b:
① i=1
② 若a,b能同时被i整除,则t=i
③ i++
④ 若 i <= a(或b),则再回去执行②
⑤ 若 i > a(或b),则t即为最大公约数,结束
改进:
① i= a(或b)
② 若a,b能同时被i整除,则i即为最大公约数,
结束
③ i--,再回去执行②
有两整数a和b:
① i=1
② 若a,b能同时被i整除,则t=i
③ i++
④ 若 i <= a(或b),则再回去执行②
⑤ 若 i > a(或b),则t即为最大公约数,结束
//穷举法求最小公倍数 for (i= a; ; i++ ) if ( i % a == 0 && i % b ==0 ) break; printf("The least common multiple:%d\n", i ) //多个数的最大公约数和最小公倍数 for (i= a; i>0; i-- ) if (a%i==0&&b%i==0&&c%i==0) break; printf("The largest common divisor:%d\n", i); for (i= a; ; i++ ) if (i%a==0&&i%b==0&&i% c==0) break; printf("The least common multiple:%d\n", i )
相关文章推荐
- 最大公约数与最小公倍数
- 最大公约数 and 最小公倍数
- C++/C经典算法百题--(39-42)年龄几何,三色球问题,两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
- 【最大公约数、最小公倍数】输入两个数字,分别求最大公约数和最小公倍数
- java实现最大公约数和最小公倍数(每天一道算法题)
- 最大公约数与最小公倍数
- 求两个数的最大公约数,最小公倍数(函数练习)
- 最大公约数 和 最小公倍数
- 最大公约数和最小公倍数问题
- 常见算法:C语言求最小公倍数和最大公约数三种算法
- C实现最大公约数和最小公倍数
- 最大公约数 最小公倍数
- 1.4输入整数m和n,求其最大公约数和最小公倍数
- 输入m和n两个正整数,求其最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 用三种算法实现最大公约数(附两种算法算最小公倍数)
- java迭代法--素数,阶乘,最大公约数,最小公倍数
- 关于如何求分数的最小公倍数和最大公约数
- 输入两个正整数m和n.求其最大公约数和最小公倍数
- 最大公约数,最小公倍数