因为我这里用的是!=0,面不是==0,所以只能用||.如果换成&&,则就会错。不信输入三个数试一试就行了。不过如果三个数中有两个数相等,那么求最小公倍数就成了问题。所以此程序还是有问题的。请教。
#include"stdio.h"
main()
{
int a1,a2,a3,b,b1,b2,b3;
printf("输入三个数求其最大公约数和最小公倍数(数与数之间用逗号隔开):\n");
scanf("%d,%d,%d",&a1,&a2,&a3);
b1=a1; b2=a2;b3=a3;
if(a1>a2){b=a1;a1=a2;a2=b;}
if(a1>a3){b=a1;a1=a3;a3=b;}
if(a2>a3){b=a2;a2=a3;a3=b;}
while(a2%a1!=0||a3%a1!=0)a1--;/*此处是只要有其中一个数不能被a1整除,则开始循环。因为我这里用的是!=0,面不是==0,所以只能用||.如果换成&&,则就会错。不信输入三个数试一试就行了。*/
printf("最大公约数是:%d",a1);
printf("最小公倍数是:%d",a1*(b1/a1)*(b2/a1)*(b3/a1));
}