举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。
代码:
#include
int main(void)
{
int gcd, lcm, m, n;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d", &m);
scanf("%d", &n);
if(m <= 0 || n <= 0)
{ printf("m <= 0 or n <= 0");
continue;
}
for(gcd=m; gcd >= 1; gcd--){
if(m % gcd == 0 && n % gcd == 0) break;
}
lcm = m * n / gcd;
printf("%d, %d\n",lcm, m, n, gcd, m, n);
}
}
运行效果:
输入输出示例:括号内为说明
输入:
3(repeat=3)
37(m=3,n=7)
244(m=24,n=4)
2418(m=24,n=18)
输出:
21,1.
24,4.
72,6.
辗转相除法:
#include
int main()
{
int m,n;
scanf("%d %d",&a,&b); //输入两个整数
int num1,num2,c; //num1,num2作为计算时的变量,c作为中间变量
if(a>=b) {num1=a; num2=b; }
else {num1=b; num2=a; }//通过比较对num1和num2赋值,便于计算
while(num2>0){
c=num1%num2;
num1=num2;
num2=c;}//辗转相除,num2=0时,num1=最大公因数
printf("最大公因数:%d\n",num1);
printf("最小公倍数:%d\n"m*n/num1);
return 0;
}
#include
#include
int gcd(int a,int b)
{
int k=1;
while (k!=0)
{k=b%a;b=a;a=k;}
return b;
}
int main()
{
int m,n,i,j,t;
printf("请输入两个正整数: ");
scanf("%d,%d",&m,&n);
if(m>n)
{t=m;m=n;n=t;}
i=gcd(m,n);
j=m*n/i;
printf("\n%d和%d的最大公约数为%d,最小公倍数为%d。\n\n",m,n,i,j);
}
执行示例:
生成的可执行文件:
举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。
代码:
#include
int main(void)
{
int gcd, lcm, m, n;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d", &m);
scanf("%d", &n);
if(m <= 0 || n <= 0)
{ printf("m <= 0 or n <= 0");
continue;
}
for(gcd=m; gcd >= 1; gcd--){
if(m % gcd == 0 && n % gcd == 0) break;
}
lcm = m * n / gcd;
printf("%d, %d\n",lcm, m, n, gcd, m, n);
}
}
运行效果:
输入输出示例:括号内为说明
输入:
3(repeat=3)
37(m=3,n=7)
244(m=24,n=4)
2418(m=24,n=18)
输出:
21,1.
24,4.
72,6.
辗转相除法:
#include
int main()
{
int m,n;
scanf("%d %d",&a,&b); //输入两个整数
int num1,num2,c; //num1,num2作为计算时的变量,c作为中间变量
if(a>=b) {num1=a; num2=b; }
else {num1=b; num2=a; }//通过比较对num1和num2赋值,便于计算
while(num2>0){
c=num1%num2;
num1=num2;
num2=c;}//辗转相除,num2=0时,num1=最大公因数
printf("最大公因数:%d\n",num1);
printf("最小公倍数:%d\n"m*n/num1);
return 0;
}
#include
int main (void)
{
int m, n, p, tmp;
printf ("Please type in two number:\n");
scanf ("%i %i", &m, &n); //输入两个数,分别放入m, n
p=m*n; //先把两数的积算出来,后面m和n的值会有变
while (n!=0){
tmp=m%n;
m=n;
n=tmp; //这段是求最大公约数的算法
}