请问一下,在C语言中,最大公约数和最小公倍数怎么写啊。
请问一下,在C语言中,最大公约数和最小公倍数怎么写啊。
呵呵,其实很容易理解乌鸦的话的,证明我就不会了。 设:a,b为整数,且有a>b,a与b的最大公约数为c a和b其实是由3个基本的整数构成的a=(a/c)*c b=(b/c)*c 注意(a/c) 与(b/c)分别为两个不同的整数。 只要由这3个基本的整数相乘就是最小公倍数d d=(a/c)*(b/c)*c =(a*b)/c
但是乌鸦说的这个公式只使用求2个的最小公约数,对于2个以上就不适用了。
公约数:
int gys(int a , int b)
{
int c;
do
{
if(a<b) {c=a;a=b;b=c;}
if(a%b == 0) return b;
a = a - b;
} while(b!=1) ;
}
未经调试,不保证正确!
这个很简单啊,自己应该可以解决吧。
先求公约数,公倍数就是两数积除以公约数。
循环,判断。
乌鸦其实已经把解决的方法说出来的了, 下面程序就是按照乌鸦的方法写的 #include <stdio.h> #include <conio.h> main(void) {int m,n,a,b,t,c; printf("\nInput two integer numbers:\n"); scanf("%d%d",&a,&b); m=a; n=b; if(a<b) { t=a; a=b; b=t; } c=a%b; while(c!=0) { a=b; b=c; c=a%b; } printf("\nThe largest common divisor:%d\n",b); printf("\nThe largest common multiple:%d",m*n/b); }