第1个回答 2010-12-25
#include<stdio.h>
void main()
{
int a,b,num1,num2,temp; //定义变量
scanf("%d%d",&num1,&num2); //输入两个数,附值给num1,num2
if(num1<num2)
{
temp=num1;num1=num2;num2=temp;
} //确保num1>=num2
a=num1;b=num2;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
} //这个循环是算公约数的一种方法,叫连续整数检测法
printf("最大公约数是%d\n",a);
printf("最大公倍数是%d\n",num1*num2/a); //num1*num2/a是一个欧几里得公式
}
你用数字带进去试试,一下就明白了
第2个回答 2010-12-25
#include <stdio.h>
//求a和b最大公约数:
int yue(int a,int b)
{
int k=1;
int t=a>b?b:a;//a大取b,否则取a
for(int i=1;i<=t;i++)
{
if((a%i==0)&&(b%i==0)) k=i;
else continue;
}
return k;//返回最大公约数
}
//求a和b的最小公倍数,参数c传递的是a和b的最大公约数
int bei(int a,int b,int c)
{
return (a*b)/c;
}
void main()
{
int a,b;
printf("请按从大到小的顺序输入2个要求值的数\n");
scanf("%d%d",&a,&b);
printf("两个数的最大公约数是%d\n",yue(a,b));
printf("两个数的最小公倍数是%d\n",bei(a,b,yue(a,b)));
}
第3个回答 2011-01-03
/*最大公约数和最小公倍数*/
#include <stdio.h>
void main()
{
int a,b,a1,b1,c,y,x;
printf("请输入两个数:");
scanf("%d %d",&a,&b);//
if(a<b)
{
c=a;
a=b;
b=c;
}
a1=a;
b1=b;//如果下面直接用a、b则会造成循环结束后a,b的值会改变,导致最后(a*b)/y结果出错
while(b1!=0)
{
x=a1%b1;
a1=b1;
b1=x;
}
y=a1;
printf("最大公约数为%d\n",y);
printf("最大公倍数%d\n",(a*b)/y);
}
第4个回答 2010-12-31
#include<stdio.h>
#include<math.h>
void g(a,b)
{
int c,e;
for(c=1;c<=(a<b?a:b);c++)
if(a%c==0&&b%c==0)//都能被整除,则存储到e;
e=c;
printf("最大公约数为:%d\n",e);
}
void f(a,b)
{
int d;
for(d=(a>b?a:b);d<=a*b;d++)
if(d%a==0&&d%b==0)//都能被整除,则输出;
{
printf("最小公倍数为:%d\n",d);
return;
}
}
void main()
{
int a,b;
printf("请输入两个整数:\n");
scanf("%d,%d",&a,&b);
g(a,b);
f(a,b);
}