最大的最大公約數 51Nod 1179

2021-08-06 04:27:06 字數 847 閱讀 2077

題目鏈結

給出n個正整數,找出n個數兩兩之間最大公約數的最大值。例如:n = 4,4個數為:9 15 25 16,兩兩之間最大公約數的最大值是15同25的最大公約數5。

input

第1行:乙個數n,表示輸入正整數的數量。(2 <= n <= 50000) 

第2 - n + 1行:每行1個數,對應輸入的正整數.(1 <= s

i i

<= 1000000)

output

輸出兩兩之間最大公約數的最大值。

sample input

4915

2516

sample output

5

思路:這是乙個典型的數學思維題,與我們所學的輾轉相除法求最大公約數,沒有一點關係(一定超時)。主要的思路:max1(a1,a1,a3,a4......an),gad=max(1,max1);這樣我們就可以換一種方法列舉。我們可以另開乙個陣列標記數字的出現次數,在來兩個for迴圈

從max1開始列舉,內層是它的倍數,如果它的倍數出現過兩次以上,這這個數就是最大公約數(因為從大到小的列舉)。

#include #include #define maxn 1000000+10

int num[maxn];

int book[maxn];

int n,m;

int main()

for(int i=max1; i>=1; i--)

}if(ans>=2)

break;

}printf("%d\n",k);

}return 0;

}

51nod 最大的最大公約數

這道題挺有意思,讓求最大的兩兩最大公約數,很顯然暴力直接做複雜度太高。可以利用試除法,列舉每乙個數的因子,如果某個因子出現超過了兩次,就可以進行判斷,因為題目要求兩兩。最大公約數一定是某個數的因子。include includeusing namespace std int cnt 50005 an...

51nod1179最大的最大公約數

題目大意 給出n個正整數,找出n個數兩兩之間最大公約數的最大值。例如 n 4,4個數為 9 15 25 16,兩兩之間最大公約數的最大值是15同25的最大公約數5。input 第1行 乙個數n,表示輸入正整數的數量。2 n 50000 第2 n 1行 每行1個數,對應輸入的正整數.1 s i 100...

51nod 1179 最大的最大公約數

給出n個正整數,找出n個數兩兩之間最大公約數的最大值。例如 n 4,4個數為 9 15 25 16,兩兩之間最大公約數的最大值是15同25的最大公約數5。input 第1行 乙個數n,表示輸入正整數的數量。2 n 50000 第2 n 1行 每行1個數,對應輸入的正整數.1 s i 1000000 ...