要求:使用全局变量,将最大公约数与最小公倍数都设为全局变量。
用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;
}
应该没有问题~~~本回答被提问者采纳
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);
}追问
{
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);
}
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);
}