진취적 삶
GCD 합 본문
문제
양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다.
출력
각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.
나의 풀이
from itertools import combinations
t_c = int(input())
sum = 0
for _ in range(t_c):
n = list(map(int, input().split()))
n.pop(0)
for i in list(combinations(n, 2)):
a, b = i
while a != b:
if a > b:
a -= b
else:
b -= a
sum += a
print(sum)
sum = 0
유클리드 호제법
a, b = 315, 495
if(b>a) : a,b = b,a # 495 315 315 180 180 135 135 45 45 0
while(b!=0):
a=a%b
a,b=b,a
print(a)
a, b = 315, 495
while(a!=b):
if(a>b) : a-=b
else : b-=a
print(a)