2 4 6 3 2 5 7
12 70這道題對我的啟發很大,雖然是一道很簡單的題,但還是Wrong Answer了好幾次。
#include代碼是這樣的。思路就是不斷的兩兩求最小公倍數,但是覺得會錯很疑惑,就去網上看了一些前輩的解答,發現他們都提到了公約數的位置的問題,即一定要先除公約數,否則如果先相乘的話會超出int的范圍。 改進後:int GCD(long n,long m) { long i; if(n =1;i --) { if(n%i == 0&&m%i == 0) return i; } } int main(void) { int a,t,max,min; int n; while(scanf(%d,&n)!=EOF) { max = min = 1; a = max/min; while(n --) { scanf(%d,&t); min = GCD(a,t); max = a * t; a = max/min; } printf(%d ,a); } }
#include最後改進下求公約數的方法int GCD(long n,long m) //求最大公約數 { int i; if(n =1;i --) { if(n%i == 0&&m%i == 0) return i; } } int main(void) { int a,t,gcd; int n; while(scanf(%d,&n)!=EOF) { a = 1; while(n --) { scanf(%d,&t); gcd = GCD(a,t); a = a / gcd * t; //先除去公約數 } printf(%d ,a); } }
#includeint GCD(long n,long m) //求最大公約數 { int i; if(n 小結:出現錯誤,但肯定思路是對的,多從一些細節方面考慮。