文章標題

//*********最大公約數***********
//作者:譚秀芳
//版本: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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章