C编序编程-题目:输入两个正整数m和n,求其最大公约数和最小公倍数。程序分析:利用辗除法。
3个回答
展开全部
#include <stdio.h>
main()
{
int a,b,m,n,temp;
printf("Please input two numbers:\n");
scanf("%d",&m);
scanf("%d",&n);
if(m<n)
{
temp=m;
m=n;
n=temp;
}
a=m;b=n;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",n*m/a);
}
辗转相除法:设两数为a、b(b<a),求它们最大公约数(a、b),
a ÷ b,令r为所得余数(0≤r<b)
若 r = 0,算法结束;b 即为答案。
最小公倍数=两数之积除以最大公约数。
main()
{
int a,b,m,n,temp;
printf("Please input two numbers:\n");
scanf("%d",&m);
scanf("%d",&n);
if(m<n)
{
temp=m;
m=n;
n=temp;
}
a=m;b=n;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",n*m/a);
}
辗转相除法:设两数为a、b(b<a),求它们最大公约数(a、b),
a ÷ b,令r为所得余数(0≤r<b)
若 r = 0,算法结束;b 即为答案。
最小公倍数=两数之积除以最大公约数。
2010-07-14
展开全部
#include <stdio.h>
#include <stdlib.h>
main()
{
while(1)
{
int a,b,r,tmp,m;
scanf("%d%d",&a,&b);
m=a*b;
if(a<b)
{
tmp=a;
a=b;
b=tmp;
}
for(r=a%b;r>0;r=a%b)
{
a=b;
b=r;
}
printf("最大公约数是%d!\n",b);
m=m/b;
printf("最小公倍数是%d!\n",m);
system("pause");
}
return 0;
}
真巧。。我以前做过
#include <stdlib.h>
main()
{
while(1)
{
int a,b,r,tmp,m;
scanf("%d%d",&a,&b);
m=a*b;
if(a<b)
{
tmp=a;
a=b;
b=tmp;
}
for(r=a%b;r>0;r=a%b)
{
a=b;
b=r;
}
printf("最大公约数是%d!\n",b);
m=m/b;
printf("最小公倍数是%d!\n",m);
system("pause");
}
return 0;
}
真巧。。我以前做过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int Euclid(int a,int b);
int main(void)
{
int a,b;
printf("Enter the two figures:");
scanf("%d %d",&a,&b);
printf("gcd:%d\n",Euclid(a,b));
return 0;
}
int Euclid(int a,int b)
{
if(a % b == 0)
return b;
else
return Euclid(b,a%b);
}
int main(void)
{
int a,b;
printf("Enter the two figures:");
scanf("%d %d",&a,&b);
printf("gcd:%d\n",Euclid(a,b));
return 0;
}
int Euclid(int a,int b)
{
if(a % b == 0)
return b;
else
return Euclid(b,a%b);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询