Re: [問題] c語言求gcd的副程式
迴圈版萬年標準解答, 不會寫也能抄
int gcd(int a, int b)
{
if (b) while((a%=b) && (b%=a));
return a+b;
}
※ 引述《gaiger (hallowed be my name)》之銘言:
: 為何不用迴圈寫?
: int gcd(int a, int b)
: {
: int c;
: int gcdnumber;
: int maxIter;
: maxIter = (int)log(double((a>b? a : b) ) + 1;
: int bigger, smaller;
: if(a > b){
: bigger = a;
: smaller = b;
: }
: else
: {
: bigger = b;
: smaller = a;
: }/*if a> b*/
: int temp;
: for(int i = 0; i< maxIter; i++){
: c = bigger%smaller;
: if(c == 0){
: gcdnumber = smaller;
: break;
: }
: else
: {
: if(smaller == 1){
: gcdnumber = 1;
: break;
: }/*if(smaller == 1)*/
: temp = smaller;
: smaller = bigger - smaller;
: bigger = smaller;
: }/*if c == 0*/
: }/*for maxiter*/
: return gcdnumber;
: }/* gcd */
: 大多數書都是講遞迴
: 但遞迴真的缺點不少:較慢,浪費較多計義體
: 且新手會被搞暈
: ※ 引述《badbadook ( 嗨浪)》之銘言:
: : 1 int gcd(u,v)
: : 2 int u,v;
: : 3 {
: : 4 int t;
: : 5 do
: : 6 {
: : 7 if(u<v)
: : 8 {t=u;u=v;v=t;};
: : 9
: : 10 u=u-v;
: : 11 }
: : 12 while (u!=v);
: : 13
: : 14 return(u);
: : 15 }
: : 請問7-10行的意義為何?
--
WOW三寶 多龍 大總統 短路徑
WOW貼文大師 瘋法
WOW翻譯機 A-N-S-E-R (好像會買一送一)
智XD的正妹 joinchi
WOWBox 艾佛列名言: wowbox 的主機我到現在都還沒看過呢.....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.175.35
推
11/30 04:08, , 1F
11/30 04:08, 1F
推
11/30 09:10, , 2F
11/30 09:10, 2F
→
11/30 09:11, , 3F
11/30 09:11, 3F
推
11/30 20:19, , 4F
11/30 20:19, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):