碰到问题
编写程序: 输入两个正整数m,n,求其最大的公约数和最小公倍数
思路分析
这题看着题目挺短的,但是,问题在于最大公约数和最小公倍数怎么求来着???
公约数,亦称“公因数”。它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。对任意的若干个正整数,1总是它们的公因数。
公约数与公倍数相反,就是既是A的约数同时也是B的约数的数,12和15的公约数有1,3,最大公约数就是3。再举个例子,30和40,它们的公约数有1,2,5,10,最大公约数是10 //百度百科
两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为[a,b],同样的,a,b,c的最小公倍数记为[a,b,c],多个整数的最小公倍数也有同样的记号。
与最小公倍数相对应的概念是最大公约数,a,b的最大公约数记为(a,b)。关于最小公倍数与最大公约数,我们有这样的定理:(a,b)x[a,b]=ab(a,b均为整数)。 //百度百科
撸写代码
#include<stdio.h>
int main()
{
int m,n,y,i;
printf("请输入m,n:");
scanf("%d %d",&m,&n);
for(i=1;i<=m;i++)
{
if(m%i==0&&n%i==0)
y=i;
}
printf("%d和 %d最大公约数为:%d\n",m,n,y);
for(i=n;i>=n;i++)
{
if(i%m==0&&i%n==0)
break;
}
printf("最小公倍数为:%d\n",i);
return 0;
}
测试结果