题目描述
写两个函数,分别求两个整数的最大公约数和最小公倍数,
用主函数调用这两个函数,并输出结果两个整数由键盘输入。
输入
两个数
输出
最大公约数 最小公倍数
样例输入
6 15
样例输出
3 30
分类
C语言
题目截图:
思路:
求最大的:
进行%运算,所以不能先从1,0开始必须从2直接开始!
然后,进行比较。把最小的数赋值给参与运算的数!
满足这个条件:if(a%i==0&&b%i==0)
就直接break,结束循环!
int max(int a,int b)
{
//cout<<"max";
int s;s=i=2;
//cout<<s<<endl;
if(a>b)
{
i=b;
}
else
i=a;
do{
if(a%i==0&&b%i==0)
{
//cout<<"do 里面的s!"<<s<<endl;
//cout<<"do 里面的i!"<<i<<endl;
s=i;
break;
}
i--;
}while(i<a&&i<b);
//cout<<"end的s!"<<s<<endl;
//cout<<"end的i!"<<i<<endl;
return s;
}
求最小的:
思路跟之前的类似!
这个只需要从2开始进行寻找就好啦!
同样满足这个条件就会结束循环!不过谁被%就发生变化啦! if(i%a==0&&i%b==0)
int min(int a,int b)
{
//cout<<"min";
int s;s=1;i=2;
do{
if(i%a==0&&i%b==0)
{
//cout<<"do 里面的s!"<<s<<endl;
//cout<<"do 里面的i!"<<i<<endl;
s=i;break;
}
i++;
}while(i<=a*b);
//cout<<"end的s!"<<s<<endl;
//cout<<"end的i!"<<i<<endl;
return s;
}
代码:
#include<iostream>
using namespace std;
int i;
int max(int a,int b)
{
//cout<<"max";
int s;s=i=2;
//cout<<s<<endl;
if(a>b)
{
i=b;
}
else
i=a;
do{
if(a%i==0&&b%i==0)
{
//cout<<"do 里面的s!"<<s<<endl;
//cout<<"do 里面的i!"<<i<<endl;
s=i;
break;
}
i--;
}while(i<a&&i<b);
//cout<<"end的s!"<<s<<endl;
//cout<<"end的i!"<<i<<endl;
return s;
}
int min(int a,int b)
{
//cout<<"min";
int s;s=1;i=2;
do{
if(i%a==0&&i%b==0)
{
//cout<<"do 里面的s!"<<s<<endl;
//cout<<"do 里面的i!"<<i<<endl;
s=i;break;
}
i++;
}while(i<=a*b);
//cout<<"end的s!"<<s<<endl;
//cout<<"end的i!"<<i<<endl;
return s;
}
int main()
{
int x,y,m,n;
cin>>x>>y;
m=max(x,y);n=min(x,y);
cout<<m<<" "<<n;
}
代码截图:
运行结果:
OJ结果: