C語言之函數調用07—求4個數的最大公約數和最小公倍數

來源:互聯網
上載者:User

標籤:c語言   函數調用   四個數的最大公約數和最小公倍數   

//函數調用
/*
==========================================================
題目:求4個數的最大公約數和最小公倍數。
==========================================================
*/
#include<stdio.h>
long gys(long m,long n)
{
int t,r;
if(m<n)
{t=m;m=n;n=t;}
while((r=m%n)!=0)
{
m=n;n=r;
}
return (n);
}
long gys(long a,long b,long c)
{
long q;
q=gys(gys(a,b),c);
return(q);
}
long gys(long a,long b, long c,long d)
{
long q;
q=gys(gys(a,b,c),d);
return (q);
}
long gbs(long a,long b)
{
return a*b/gys(a,b);
}
long gbs(long a,long b,long c)
{
return gbs(a,b)*c/gys(gbs(a,b),c);
}
long gbs(long a,long b,long c,long d)
{
return gbs(a,b,c)*d/gys(gbs(a,b,c),d);
}
void main()
{
long a,b,c,d;
long gyshu,gbshu;
printf("輸入四個數:");
scanf("%ld%ld%ld%ld",&a,&b,&c,&d);
gyshu=gys(a,b,c,d);
gbshu=gbs(a,b,c,d);
printf("%ld、%ld、%ld、%ld 的最大公約數是:%ld\n",a,b,c,d,gyshu);
printf("%ld、%ld、%ld、%ld 的最小公倍數是:%ld\n",a,b,c,d,gbshu);
}


/*
====================================================================
評:
要點在於重複調用!始終把計算結果作為一個數,就實現了先計算兩個數a,b,
將gys(a,b)或gbs(a,b)作為一個數與c重新調用函數“gys”或“gbs”,同理,
將gys(a,b,c)或gbs(a,b,c)作為一個數與重新調用函數“gys”或“gbs”,
甚至可以實現更多數位公約數和公倍數!如果數字比較多,而且大,就需要
改為double型!
缺點:顯然這種方法寫程式雖然直觀但是很慢!讀者可以試著用一個temp變數
儲存最新的公約數,直到最後一個公約數求完為之。則問題轉化為始終求兩個
數的公約數。
=====================================================================
*/

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

C語言之函數調用07—求4個數的最大公約數和最小公倍數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.