最大公约数
如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称 为这几个自然数的最大公约数。
最小公倍数(Least Common Multiple,缩写L.C.M.)
如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数,对于两个整数来说,指该两数共有倍数中最小的一个。
相关习题:
《C程序设计》(第三版)6.1
《C程序设计教程》 5.1
Solution by Mutoo:
- #include<stdio.h>
- // 用辗转相除法(欧几里得法)求最大公约数
- long get**(long a, long b)
- {
- long r;
- do
- {
- r=a%b; // 在这里不需要预先判断a与b的大小,如果a<b,则在第一次循环后便会交换a、b的值使得 a>b
- a=b;
- b=r;
- }while(r!=0);
- return a;
- }
- void main()
- {
- long a,b,**,lcm;
- do
- {
- printf("Please input a,b=/n");
- scanf("%ld,%ld",&a,&b);
- if(a<=0 || b<=0){
- printf("Please input two natural numbers!/n");
- continue;
- }// a,b为自然数
- **=get**(a,b);
- //最小公倍数等于两数之积除以最大公约数
- lcm=a*b/**;
- printf("**=%ld/n",**);
- printf("lcm=%ld/n",lcm);
- }while(getch!='q');
- }
以上被**的字符是GCD,最大公约数 Greatest Common Divisor 的缩写,囧