求最小公倍數,最大公約數

輾轉相除法

輸入N、M

//N對M求餘爲A,    若A不爲0,則將餘值賦給M,M值賦給N,再N%M,一直往下,
//直到N%M=0,中間過程即是N一直大於M的.用一個RES作爲中間變量來傳值.
//最後,若A=0,則N爲最大公約數..最小公倍數爲M與N乘積/最大公約數
//所以爲了記錄M與N的初始值,用m_temp, n_temp來得到M與N的初始值,以方便最後求最小公倍數
#include<stdio.h>
#include<stdlib.h>

int  main(void)
{
int n,m;
int n_temp,m_temp;
   
    printf("輸入兩個正整數\n");
    scanf("%d %d",&n,&m);
    n_temp=n;
    m_temp=m;
    int res;
    if(m>0&&n>0)
    {
        do{
            res=n%m;
            n=m;
            m=res;
        }while(m!=0);
            printf("最大公約數是:%d\n",n);
            printf("最小公倍數是:%d\n",m_temp*n_temp/n);
    }
    else printf("wrong\n");
    system("pause");
    return 0;
}
//在輸入時N和M二者大小無所謂

//在do.. while循環中小數模上大數等於小數,所以如果N<M,
//則第一次循環是將二者交換了,以後還是大數模上小數!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章