def get_gcd(a, b):
if(b > a):
num_1 = b
num_2 = a
else:
num_1 = a
num_2 = b
if(num_1 % num_2 == 0):
return num_2
while(num_1 % num_2):
gcd = num_1 % num_2
num_1 = num_2
num_2 = gcd
return gcd
N = int(input())
num_list = [int(input()) for _ in range(N)]
num_list = sorted(num_list, reverse = True)
diff_list = [a - b for a, b in zip(num_list, num_list[1:] + [0])][:-1]
init_gcd = diff_list[0]
for i in range(1, len(diff_list)):
init_gcd = get_gcd(init_gcd, diff_list[i])
results = []
for i in range(2, int(init_gcd ** (1/2)) + 1):
if(init_gcd % i == 0):
results.append(i)
if(init_gcd // i != i):
results.append(init_gcd // i)
results.append(init_gcd)
results = sorted(set(results))
print(''.join([str(i) + ' ' for i in results])[:-1])
각 리스트의 차이를 구하고, 그 차이들의 최대 공약수의 약수를 출력.
'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글
백준 11050번(python) (0) | 2020.04.19 |
---|---|
백준 3036번(python) (0) | 2020.04.19 |
백준 2609번(python) (0) | 2020.04.10 |
백준 1037번(python) (0) | 2020.04.09 |
백준 5086번(python) (0) | 2020.04.09 |