C++ 求两个数的最小公倍数的程序 5
4个回答
展开全部
// 先求最大公约数,再得最小公倍数
int gcd(int a, int b)// greatest common divisor,最大公约数
{
if ( a == 1 || b == 1)
{
return 1;
}
else
{
int d = max( a, b) % min( a, b);
if ( d == 0 )
{
return min( a, b);
}
else
{
return gcd( d, min( a, b));
}
}
}
int lcm( int a, int b)// lease common multiple,最小公倍数
{
if ( a<=0 || b<=0 )
{
printf("请输入正数!\n");
return 0;
}
int g = gcd( a, b);
return (a * b / g);
}
void main()
{
printf("%d\n", lcm(2, 13));
}
int gcd(int a, int b)// greatest common divisor,最大公约数
{
if ( a == 1 || b == 1)
{
return 1;
}
else
{
int d = max( a, b) % min( a, b);
if ( d == 0 )
{
return min( a, b);
}
else
{
return gcd( d, min( a, b));
}
}
}
int lcm( int a, int b)// lease common multiple,最小公倍数
{
if ( a<=0 || b<=0 )
{
printf("请输入正数!\n");
return 0;
}
int g = gcd( a, b);
return (a * b / g);
}
void main()
{
printf("%d\n", lcm(2, 13));
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
采用辗转相除法
#include <stdio.h>
void main()
{
int x,y,a,b;
printf("please input two num x,y : ");
scanf("%d,%d",&x,&y);
for(a=x<y?x:y,b=x>y?x:y;a>0;t=b,b=a,a=t%a)
if(b%a==0)
{
printf("%d,%d的最大公约数是 %d\n",x,y,a);
break;
}
printf("%d,%d的最小公倍数是 %d\n",x,y,x*y/a);
}
ytaofighting的对于大数字不适用
#include <stdio.h>
void main()
{
int x,y,a,b;
printf("please input two num x,y : ");
scanf("%d,%d",&x,&y);
for(a=x<y?x:y,b=x>y?x:y;a>0;t=b,b=a,a=t%a)
if(b%a==0)
{
printf("%d,%d的最大公约数是 %d\n",x,y,a);
break;
}
printf("%d,%d的最小公倍数是 %d\n",x,y,x*y/a);
}
ytaofighting的对于大数字不适用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main() /*主程序开始*/
{
int aa,bb,a,b,c,t;
printf(“请输入要求最大公约数和最小公倍数的两个整数:\n”);
scanf(“%d %d”,&a,&b);
aa=a;
bb=b;
if(a<b)
{
t=a;
a=b;
b=t;
}
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf(“这两个数的最大公约数为:%d\n”,b);
printf(“这两个数的最小公倍数为:%d\n”,aa*bb/b);
}
{
int aa,bb,a,b,c,t;
printf(“请输入要求最大公约数和最小公倍数的两个整数:\n”);
scanf(“%d %d”,&a,&b);
aa=a;
bb=b;
if(a<b)
{
t=a;
a=b;
b=t;
}
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf(“这两个数的最大公约数为:%d\n”,b);
printf(“这两个数的最小公倍数为:%d\n”,aa*bb/b);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询