一点小小的思路。
其实也没什么, 就是把n个数依次求gcd就行了。 每求过一次两数的gcd, 就把原来的两数删除并把新的gcd加入即可。 时间复杂度O(n)。
证明:
若原来的n个数分别为a1,a2,...,an, 记结果ans = gcd(a1,a2,...an), 那么对于任意ai, 有ans | ai。 从集合的角度来看, 若Ai为ai的因数集合, 那么ANS = A1 ∩ A2 ∩... ∩ An。 现在我们可以得出结论, ANS ∈ Ai ∩ Aj, 故原方法成立。
一点小小的思路。
其实也没什么, 就是把n个数依次求gcd就行了。 每求过一次两数的gcd, 就把原来的两数删除并把新的gcd加入即可。 时间复杂度O(n)。
证明:
若原来的n个数分别为a1,a2,...,an, 记结果ans = gcd(a1,a2,...an), 那么对于任意ai, 有ans | ai。 从集合的角度来看, 若Ai为ai的因数集合, 那么ANS = A1 ∩ A2 ∩... ∩ An。 现在我们可以得出结论, ANS ∈ Ai ∩ Aj, 故原方法成立。