C语言实现求最大公约数与最小公倍数

版权声明:感谢观看我的博客https://me.csdn.net/weixin_43794314 https://blog.csdn.net/weixin_43794314/article/details/85222857

最大公约数 = 两数之积 / 最小公倍数,所以只要求出一个即可。

辗转相除法:(求最大公约数)
有两整数a和b(a>b), a%b得余数c,若c=0,则b即为两数的最大公约数
若c≠0,则a = b,b = c,继续求余数。

最小公倍数
定义一个变量从1开始,每增1对这几个数进行求余运算,直到这几个数的
余数为0,此时该数即为这几个数的最小公倍数。
最小公倍数总是大于或等于这几个数中的最大数,小于或等于这几个数的乘积。
利用这一性质也可以反过来编程,即从这几个数的乘积减1开始自减,进行求余预算即可。

方法一:

void fun(int m, int n)
{
	int yueshu = m%n;
	int  x = m*n; //记录m*n为后面求公倍数 
	if(yueshu == 0)
		printf("%d %d\n",n,x/n);
	 else
	 {
		while(yueshu != 0)
		{
			m = n;
			n = yueshu;
			yueshu = m%n;		 
		}
		printf("%-5d %-5d\n",n,x/n);
	  }		
}

方法二:

void fun(int a,int b)
{
	int i, min = a*b, max = 1;
    for(i = 2; i <= a; i++)
    {
        if(a%i == 0 && b%i == 0)
            max = i;
    }
    for(i = a*b-1; i >= a; i--)
    {
        if(i%a == 0 && i%b == 0)
            min = i;
    }
    printf("%-5d %-5d\n",max,min);
}

猜你喜欢

转载自blog.csdn.net/weixin_43794314/article/details/85222857