C语言求最小公倍数怎么求? 10
#include<stdio.h>intmain(){inta,b,c,x,y,zuixiao;while(scanf("%d%d",&a,&b)!=EOF){x=a;y...
#include<stdio.h>
int main()
{int a,b,c,x,y,zuixiao;
while(scanf("%d%d",&a,&b)!=EOF)
{x=a;
y=b;
c=1;
if(a==0&&b==0)
break;
if(a==b)
{zuixiao=(x*y)/a;
printf("%d\n",zuixiao);
}
if(a>b)
{while(c!=0)
{ c=a%b;
a=b;
b=c;}
zuixiao=(x*y)/a;
printf("%d\n",zuixiao);
}
if(a<b)
{while(c!=0)
{ c=b%a;
b=a;
a=c;}
zuixiao=(x*y)/b;
printf("%d\n",(x*y)/b);
}
}
return 0;
}
这是我用上一道最大公约数的程序改的,上一道说我对了。然而我只是把结果改了一下,OJ就说我答案错了。但是我测了几组数据也还是对的。谁能帮帮我 展开
int main()
{int a,b,c,x,y,zuixiao;
while(scanf("%d%d",&a,&b)!=EOF)
{x=a;
y=b;
c=1;
if(a==0&&b==0)
break;
if(a==b)
{zuixiao=(x*y)/a;
printf("%d\n",zuixiao);
}
if(a>b)
{while(c!=0)
{ c=a%b;
a=b;
b=c;}
zuixiao=(x*y)/a;
printf("%d\n",zuixiao);
}
if(a<b)
{while(c!=0)
{ c=b%a;
b=a;
a=c;}
zuixiao=(x*y)/b;
printf("%d\n",(x*y)/b);
}
}
return 0;
}
这是我用上一道最大公约数的程序改的,上一道说我对了。然而我只是把结果改了一下,OJ就说我答案错了。但是我测了几组数据也还是对的。谁能帮帮我 展开
4个回答
2015-10-05
展开全部
#include <stdio.h>
int GCD(int num1,int num2)
{
if (num1 % num2 == 0)
return num2;
else
return GCD(num2, num1 % num2);
}
int LCM(int a,int b)
{
int temp_lcm;
temp_lcm = a*b/GCD(a, b); //最小公倍数等于两数之积除以最大公约数
return temp_lcm;
}
int main()
{
int a,b;
while (scanf("%d%d",&a,&b)!= EOF)
{
printf("%d\n",LCM(a,b));
}
return 0;
}
先求出最大公约数,
最小公倍数由最大公约数转化过去
最大公约数由递归就可以出来了
望采纳谢谢
int GCD(int num1,int num2)
{
if (num1 % num2 == 0)
return num2;
else
return GCD(num2, num1 % num2);
}
int LCM(int a,int b)
{
int temp_lcm;
temp_lcm = a*b/GCD(a, b); //最小公倍数等于两数之积除以最大公约数
return temp_lcm;
}
int main()
{
int a,b;
while (scanf("%d%d",&a,&b)!= EOF)
{
printf("%d\n",LCM(a,b));
}
return 0;
}
先求出最大公约数,
最小公倍数由最大公约数转化过去
最大公约数由递归就可以出来了
望采纳谢谢
展开全部
举个例吧,如4和6两个数,求它们的最大公约数和最小公倍数。利用短除法:2∟ 4 6 得2 3,那么最大公约数就是2,最小公倍数就是2×2×3=12。 关键要弄清最大公约数和最小公倍数的概念。公约数,就是能是所给出的数共同小化,就像是将分数简化一样。那么使得他们简化的数的乘积就是最大公倍数;若在乘上最终简化的结果数就是最小公倍数。 如4和6可写成4/6,同时约去的只有2,那么2是最大公约数;约去后变为2/3,2×2×3=12,为最小公倍数。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
main()
{
int a,b,i,t,k;
printf("输入两个数a>1,b>1\n");
scanf("%d %d",&a,&b);
if(a>b)
{
t=a;a=b;b=t;
}
for(i=1;i<=a;i++)
if((b*i)%a==0)
{
k=b*i;break;
}
printf("%d",k);
}
main()
{
int a,b,i,t,k;
printf("输入两个数a>1,b>1\n");
scanf("%d %d",&a,&b);
if(a>b)
{
t=a;a=b;b=t;
}
for(i=1;i<=a;i++)
if((b*i)%a==0)
{
k=b*i;break;
}
printf("%d",k);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询