回覆列表
  • 1 # 扶尾貓秋風水清

    main()

    {

    intp,r,n,m,temp;

    printf("Pleaseenter2numbersn,m:");

    scanf("%d,%d",&n,&m);//輸入兩個正整數.

    if(n<m)//把大數放在n中,把小數放在m中.

    {temp=n;

    n=m;

    m=temp;

    }

    p=n*m;//P是原來兩個數n,m的乘積.

    while(m!=0)//求兩個數n,m的最大公約數.

    {

    r=n%m;

    n=m;

    m=r;

    }

    printf("ItsMAXGongYueShu:%d\n",n);//列印最大公約數.

    printf("ItsMINGongBeiShu:%d\n",p/n);列印最小公倍數.

    基本原理如下:

    用歐幾里德演算法(輾轉相除法)求兩個數的最大公約數的步驟如下:

    先用小的一個數除大的一個數,得第一個餘數;

    再用第一個餘數除小的一個數,得第二個餘數;

    又用第二個餘數除第一個餘數,得第三個餘數;

    這樣逐次用後一個數去除前一個餘數,直到餘數是0為止。那麼,最後一個除數就是所求的最大公約數(如果最後的除數是1,那麼原來的兩個數是互質數)。

    例如求1515和600的最大公約數,

    第一次:用600除1515,商2餘315;

    第二次:用315除600,商1餘285;

    第三次:用285除315,商1餘30;

    第四次:用30除285,商9餘15;

    第五次:用15除30,商2餘0。

    1515和600的最大公約數是15。

    兩個正整數的最小公倍數=兩個數的乘積÷兩個數的最大公約數

    由於兩個數的乘積等於這兩個數的最大公約數與最小公倍數的積。這就是說,求兩個數的最小公倍數,可以先求出兩個數的最大公約數,再用這兩個數的最大公約數去除這兩個數的積,所得的商就是兩個數的最小公倍數。

    例求105和42的最小公倍數。

    因為105和42的最大公約數是21,

    105和42的積是4410,4410÷21=210,

    所以,105和42的最小公倍數是210。

  • 中秋節和大豐收的關聯?
  • 如何安全運輸水生動物?