//*********最大公約數***********
//作者:譚秀芳
//版本:v1.0
//創建時間:2017年3月19日
//主要功能:隨機從鍵盤中輸入的兩個整數,用三種算法實現求兩個整數的最大公約數,即輾轉相除法,窮舉法,相減法
//************************************
#include <stdio.h>
int main()
{
int a,b,temp,num,k=1; //定義變量
int Division(int x,int y);
int Decrease(int x,int y);
int Exhausetion(int x,int y);
while(k) //使用while結構循環輸入兩個整數
{
printf("請輸入兩個整數(兩數之間用空格隔開):\n");
scanf("%d%d",&a,&b);
if(a<=0||b<=0) //判斷a,b,中是否有0存在,若無則繼續運行,若有則輸出錯誤提示並重新輸入兩個整數
{
printf("輸入的數據錯誤!\n");
printf("請輸入兩個整數(兩數之間用空格隔開):\n");
scanf("%d%d",&a,&b);
}
if(a<b) //判斷a,b的大小,並且使a>b
{
temp=b;
b=a;
a=temp;
}
printf("1.輾轉相除法 2.相減法 3.窮舉法 4.退出 5.繼續 \n");
int m=1;
while(m) //輸入兩個整數後循環輸出菜單,調用相關的函數
{
printf("請選擇菜單編號:");
scanf("%d",&num);
switch(num)
{
case 1: Division(a,b);break;
case 2: Decrease(a,b);break;
case 3: Exhausetion(a,b);break;
case 4: k=0,m=0;break;
case 5: k=1,m=0;break;
default:printf("請在數字1-4之間選擇\n");
}
}
}
return 0;
}
//輾轉相除法求最大公約數函數
int Division(int x,int y)
{
int t;
t=x%y;
if(t!=0)
{
x=y;
y=t;
t=x%y;
}
printf("最大公約數:%d\n",y);
return 0;
}
//相減法求最大公約數函數
int Decrease(int x,int y)
{
while(x!=y)
if(x>y)
x=x-y;
else
y=y-x;
printf("最大公約數爲:%d\n",x);
return 0;
}
//窮舉法求最大公約數函數
int Exhausetion(int x,int y)
{
int i,t;
for(i=1;i<=x;i++)
if(x%i==0&&y%i==0)t=i;
printf("最大公約數:%d\n",t);
return 0;
}
文章標題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.