作者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