[問題] 最大公因數

看板C_and_CPP作者 (黃金會死鳥-死後無法復活)時間8年前 (2016/05/30 15:25), 8年前編輯推噓4(406)
留言10則, 7人參與, 最新討論串1/2 (看更多)
看到一種版本求最大公因數的寫法, 但是他的迴圈看不懂 int gcd(int a, int b) { while ((a %= b) && (b %= a)) /* empty */; return a + b; } 他的 while 裡面左右都是整數, 怎麼取 AND ? 而且 while 裡面也不動作 這個程式真的能動嗎 ? -- 歷代主角: 武藤戲---神抽 城十代---強運 不動星---印卡 九十九馬---搓牌 翼神龍 效果:此卡不可特殊召喚... 神獸王 表示:同樣三祭品 我免費炸半場外加三千打點 裁龍 表示:同樣支一千 我能炸全場還不用扣血加攻 巨神兵 表示:聽說我可以特召 天空龍 表示:我現在可以捏死原作狂特召的你 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1464593129.A.088.html

05/30 15:29, , 1F
為何不用Debugger跑跑看呢?
05/30 15:29, 1F

05/30 16:00, , 2F
0代表false,非0代表true囉,當然可以AND
05/30 16:00, 2F

05/30 16:00, , 3F
迴圈裡面也有動作啊,%=不就是動作嗎
05/30 16:00, 3F
while ((a %= b) && (b %= a)) /* empty */; 所以他把迴圈內部應該執行的動作放到判斷迴圈執行那裡 ? 只要有任何一個算出 0 就會跳出迴圈 ?

05/30 16:03, , 4F
建議你在while前加上一個判斷是,a,b不為0
05/30 16:03, 4F

05/30 16:03, , 5F
展轉相除法
05/30 16:03, 5F

05/30 16:04, , 6F
然後你的while沒有加分號
05/30 16:04, 6F

05/30 16:04, , 7F
阿我眼殘..看到了XD
05/30 16:04, 7F
※ 編輯: WingedDragon (140.112.25.105), 05/30/2016 18:07:18

05/30 18:05, , 8F
輾轉相除法,這樣寫要記得b不能為0
05/30 18:05, 8F

05/31 14:32, , 9F
你到底要不要自己跑跑看。
05/31 14:32, 9F

06/01 21:19, , 10F
輾轉?
06/01 21:19, 10F
文章代碼(AID): #1NI-hf28 (C_and_CPP)
文章代碼(AID): #1NI-hf28 (C_and_CPP)