題目描述
寫兩個函數,分别求兩個整數的最大公約數和最小公倍數,
用主函數調用這兩個函數,并輸出結果兩個整數由鍵盤輸入。
輸入
兩個數
輸出
最大公約數 最小公倍數
樣例輸入
6 15
樣例輸出
3 30
分類
C語言
題目截圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SM0UTN5cDMzUTN0UWNxQzYyYzX4QzM0gTM1AzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
思路:
求最大的:
進行%運算,是以不能先從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;
}
代碼截圖:
運作結果: