急:C++编程:求两正整数的最大公约数和最小公倍数,用一个函数求最大公约数,另外一个函数求最小公倍数。

要求:使用全局变量,将最大公约数与最小公倍数都设为全局变量。

用C语言可以吗?我没学过C++;

下面是我写的程序和运行的结果:

#include <stdio.h>

int gongyueshu(int x, int y);

int gongbeishu(int x, int y);

int yueshu, beishu;

int main()

{

    int x, y;

    while(scanf("%d %d", &x, &y)==2)

    {

        yueshu=gongyueshu(x, y);

        beishu=gongbeishu(x, y);

        printf("%d,%d的最大公约数是%d\n", x, y, yueshu);

        printf("%d,%d的最小公倍数是%d\n\n", x, y, beishu);

    }

}

int gongyueshu(int x, int y)

{

    int z;

    while(z!=0)

    {

        z=x%y;

        x=y;

        y=z;

    }

    return x;

}

int gongbeishu(int x, int y)

{

    return x*y/yueshu;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-12-02
#include <iostream.h>
int max(int m,int n);
int min(int m,int n);
int x,y; //x为最大公约数,y为最小公倍数

void main()
{
int m,n;
cout<<"请输入2个正整数:";
cin>>m>>n;
cout<<"最大公约数为"<<max(m,n)<<"最小公倍数为"<<min(m,n)<<endl;
}

int max(int m,int n)
{
int t=0;
if(m>n)
{
for(int i=n;i>0;i--)
{
if(m%i==0&&n%i==0)
{
x=i;
break;
}
}
}
else
{
for(int i=m;i>0;i--)
{
if(m%i==0&&n%i==0)
{
x=i;
break;
}
}
}
return x;
}

int min(int m,int n)
{
max(m,n);
y=m*n/x;
return y;
}
应该没有问题~~~本回答被提问者采纳
第2个回答  2011-05-03
int gcd(int x,int y)
{
long int z;
if(x%y==0)
z=y;
else
z=gcd(y,x%y);
return z;
}
#include "stdio.h"
main()
{
int gcd(int x,int y);//求最大公约数的递归函数
int m,n,c,d,i,temp;//c为最大公约数,d为最大公倍数
scanf("%d %d",&m,&n);
if(m<n)
{
temp=m;
m=n;
n=temp;
}
c=gcd(m,n);
for(i=1;;i++)
{
if(i%m==0&&m%n==0)
d=i;
break;
}
printf("%d %d\n",c,d);
}追问

咋不对呢

第3个回答  2012-05-07
#include<stdio.h>
void main()
{int a,b,num1,num2,temp;
scanf("%d %d",&num1,&num2);
if(num1<num2){temp=num1;num1=num2;num2=temp;}
a=num1;b=num2;
while(b!=0)
{temp=a%b;
a=b;
b=temp;}
printf("%d\n",a);
printf("%d\n",num1*num2/a);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网