作者leonlicon (Leon)
看板C_and_CPP
標題[問題] 求最大公因數,三個整數
時間Tue Apr 21 19:53:25 2009
#include<iostream>
using namespace std;
void func(int c);
int main()
{
int num1, num2, num3;
cout << "請輸入第一個整數 : ";
cin >> num1;
cout << "請輸入第二個整數 : ";
cin >> num2;
cout << "請輸入第三個整數 : ";
cin >> num3;
int a,b=num2,c=num3,d=num1%num2%num3;
while (d!=0)
{
a=b;
b=c;
c=d;
d=a%b%c;
}
func(c);
}
void func(int c)
{
cout << "最大公因數為 " << c << endl;
system("pause");
}
請問我哪裡寫錯了
我輸入 18 30 36
她顯示的最大公因數卻是 12
我思考很久還是不知道錯在哪裡
希望會的人可以教我一下 ^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.85.186
1F:推 VictorTom:三個數的最大公因數不是其中兩個的最大公因數的結果, 04/21 20:04
2F:→ VictorTom:再去和第三個數求一次最大公因數就好了嗎?? 04/21 20:04
3F:→ VictorTom:只是覺得你的code好像是把三個數攪在一起算....@_@" 04/21 20:05
4F:推 gozha:我沒看過這樣的輾轉相除就是了.. 囧 04/21 20:31
5F:→ leonlicon:V大,那我應該要如何改才會正確?? 04/21 20:32
6F:→ leonlicon:因為我想了,3小時還是不知道該如改 囧rz 04/21 20:33
7F:→ netsphere:GCD(GCD(a,b),c) ? 04/21 20:34
8F:推 VictorTom:樓上已經寫了, 不用function, 就分兩個迴圈各跑一次吧. 04/21 20:48
9F:→ VictorTom:把書上交兩數輾轉相除法的code copy再改一改就是了@_@" 04/21 20:49
10F:→ leonlicon:我會用function,試題目要求 04/21 21:20
11F:→ leonlicon:因為不想等到下禮拜才講解所以先問(今天期中考題目) 04/21 21:21
12F:→ leonlicon:我先來思考一下n大寫的 04/21 21:27
13F:→ leonlicon:看來我上課太混了,n大都講了,結果我還是不知如何改... 04/21 21:42
14F:推 VictorTom:你會用func是題目要求?? 問題是你的寫法不太像是題目希 04/21 22:12
15F:→ VictorTom:望的, 如果題目是寫一個func求最大公因數, 你原來的寫法 04/21 22:12
16F:→ VictorTom:只是把已經算好的數值印出來, func不是求值用的.... 04/21 22:13
17F:→ VictorTom:至於用while做輾轉相除法應該是非常常見的例子了... 04/21 22:13
18F:→ VictorTom:參考n大的方式改一下應該就有了才對....@_@" 04/21 22:14
19F:推 niewolf:推樓上 你的func只是做輸出 應該不是題目想要的.. 04/22 11:04