gcd最大公约数;lcd最小公倍数

fun(a,b)
{
  int a,b;
   int i,j,m,n;
   if(a>b)
   {m=a; a=b;b=m}
   i=a;j=b;
   while(n= j%i)!=0)     //大的除以小的
   {j=i; i=n}
   return(i);
}

也有下面这种形式

int gcd(int m,int n)   
{
 	int r;
 	r=m%n;
 	while(r!=0)
 	{
 		m=n;
 		n=r;
 		r=m%n;
	 }
	 return n;
 }
int lcm(int m,int n)
{
 	return (m*n)/gcd(m,n);
}

原理

#include <stdio.h>
int main()
{
	int k,m,n,s;
	scanf("%d %d",&m,&n);
	k = m%n;
	if(k==0)
	{
		printf("%d %d",n,m*n/n);
	}
	else
	{
	do
	{
		s=k;
		k=n%k;
		if(k==0)
		{
			printf("%d %d",s,m*n/s);
		}
		}while(k!=0);
	}
	return 0;
}
赞赏