最小公倍数与最大公因数

来源:百度知道 编辑:UC知道 时间:2024/06/05 19:04:05
#include<stdio.h>
#include<stdlib.h>
main()
{
int m,n,a,b,i,p,q;
scanf("%d,%d",&m,&n);
a=(m>n)?m:n;
b=(m>n)?n:m;
for(p=a,q=b,i=2;(p%b==0)&&(a%q==0);i++)
{if (p%b!=0) p=a*i;
if (a%q!=0) q=b/i;}
printf("最小公倍数为%d\n",p);
printf("最小公约数为%d\n",q);
system("pause");
}
------------------------------------------------------------------
麻烦看一下问题在哪儿 还是根本不行~
想明白了 还得分开算 弄一起搞乱了

#include<stdio.h>
#include<stdlib.h>
main()
{
int m,n,a,b,i,p,q;
scanf("%d,%d",&m,&n);
a=(m>n)?m:n;
b=(m>n)?n:m;
for(p=a,i=2;p%b!=0;i++) p=a*i;
for(q=b,i=2;a%q!=0||(b%(i-1))!=0;i++) q=b/i;
printf("最小公倍数为%d\n",p);
printf("最大公约数为%d\n",

这样求p还算是可以的, 求q是不行的。 因为 q= b/i并不确保q可以整除b

最大公约和最小公倍只要求一个就可以了。 如果跟你这里一样的记号, p是最小公倍, q是最大公约, 他们有这样的关系: p*q == a*b . 根据这个 有一个就可以求另一个了

求最小公约数的标准做法是辗转相除, 别的做法都要差一些, 有兴趣找个介绍看看吧