蓝桥杯 公因数匹配
题目
链接
分析
不是很难
只需要统计每个数的所有质因子
然后统计具有同一个质因子的两个数的下标哪个更小即可
代码
n = int(input())
a = list(map(int, input().split()))
ii = 100001
jj = 100001
zyz_to_index = {}
# 统计每个数的质因子
for i in range(n):
x = a[i]
zyz = set()
for j in range(2, int(x ** 0.5) + 1):
while x % j == 0:
x //= j
zyz.add(j)
if x > 1:
zyz.add(x)
for yz in zyz:
if yz not in zyz_to_index:
zyz_to_index[yz] = [i + 1]
else:
zyz_to_index[yz].append(i + 1)
for zyz, index in zyz_to_index.items():
if len(index) >= 2 and (index[0] < ii or index[0] == ii and index[1] < jj):
ii = index[0]
jj = index[1]
print(ii, jj)