c语言编程:输入两个正整数,求最大公约数和最小公倍数

 我来答
lcy8760450
2015-09-17 · TA获得超过956个赞
知道小有建树答主
回答量:610
采纳率:64%
帮助的人:383万
展开全部
#include<stdio.h>
//最大公约数
int gcd(int a,int b)
{
    if (a > b)
    {
        a^=b;b^=a;a^=b;
    }
    return a > 0 ? gcd (b % a, a) : b;
}
//最小公倍数
int lcm(int a, int b)
{
    int i;
    if (a > b)
    {
        a^=b;b^=a;a^=b;
    }
    for (i = b; i % a != 0; i+= b);
    return i;
}

int main()
{
    int a,b;
    while(scanf("%d%d",&a,&b) !=EOF)
    {
        printf("%d %d\n", gcd(a,b),lcm(a,b));
    }
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
背心_心背
2014-12-10 · TA获得超过449个赞
知道小有建树答主
回答量:644
采纳率:100%
帮助的人:492万
展开全部
int gcd(int, int); //两个数的最大公约数
int ngcd(int *, int) //N个数的最大公约数
int lcm(int, int) //两个数的最小公倍数
int nlcm(int *, int) //N个数的最小公倍数

int gcd(int a, int b)
{
if(a < b) //swap(a,b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}

int c;
while((c = a % b) != 0) //辗转相除
{
a = b;
b = c;
}
return b;
}

int ngcd(int * pa, int n)
{
if(n == 1)
return *pa;
return (gcd(pa[n-1], ngcd(pa, n-1)));
}

int lcm(int a, int b) //最大公倍数 = 两数乘积 / 最大公约数
{
return a*b/gcd(a, b);
}

int nlcm(int * pa, int n)
{
if(n == 1)
return *pa;
return lcm(pa[n-1], nlcm(pa, n-1));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
I乐于助人I
2014-10-30 · TA获得超过395个赞
知道小有建树答主
回答量:272
采纳率:100%
帮助的人:126万
展开全部
#include 
int main() 

int m, n; 
int m_cup, n_cup, res; /*被除数, 除数, 余数*/ 
printf("Enter two integer:\n"); 
scanf("%d %d", &m, &n); 
if (m > 0 && n >0) 

m_cup = m; 
n_cup = n; 
res = m_cup % n_cup; 
while (res != 0) 

m_cup = n_cup; 
n_cup = res; 
res = m_cup % n_cup; 

printf("Greatest common divisor: %d\n", n_cup); 
printf("Lease common multiple : %d\n", m * n / n_cup); 

else printf("Error!\n"); 
return 0; 
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在古崖居调查民俗的白鹭
2011-03-13
知道答主
回答量:14
采纳率:0%
帮助的人:9.5万
展开全部
#include <stdio.h>

int main()
{
printf("请输入两个数a,b:");
int a,b;
scanf("%d,%d",&a,&b);

int c,min,max;
c = a>=b ? b : a;
for(;c>0;c--)
{
if ( a%c==0 && b%c==0)
{max=c;
break;}
}
min = a*b/max;

printf("最大公约数是%d,最小公倍数是%d\n",max,min);

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-10
展开全部
#include<stdio.h>
void main()
{int a,b,c,d,m;
printf("Please Input two Integer:");
scanf("%d%d",&c,&d);
if(c>d)
{m=d;d=c;c=m;}
a=c;b=d;
while(b!=0)
{
m=a%b;a=b;b=m;
}
printf("最大公约数是:%d\n",a);
printf("最小公倍数是:%d\n",c*d/a);}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式