def get_divide_list(num):
    result = []
    for i in range(1,int(num**0.5)+1):
        if not num%i:
            result.extend([i,num//i])

    result = list(set(result))
    result.remove(1)
    return result

N = int(input())

arr = list(map(int,input().split()))

X = int(input())


X_list = get_divide_list(X)

answer = 0
cnt = 0
for num in arr:
    for x_num in X_list:
        if not num%x_num:
            break
    else:
        answer += num
        cnt += 1

print(answer/cnt)

 

 

이 문제 또한, 소수를 구하면 된다. 약수를 구할때, 구하고자하는 수의 sqrt만

 

탐색을 해주면 좀 더 빠르게 할 수 있다는 점을 생각하고 풀면 편한다.

 

만약 1을 제외한 약수들을 구한뒤, 약수로 나뉘면, 멈추는 방식으로 해서, 평균을 구했다.

 

 

사실 python 유저라면 gcd 라이브러리를 쓰는게 편하다!

 

아니면 gcd를 구현해도 된다.

'알고리즘 > 백준' 카테고리의 다른 글

[BOJ/백준] 21922 학부 연구생 민상  (0) 2021.06.10
[BOJ/백준] 21921 블로그  (0) 2021.06.10
[BOJ/백준] 21919 소수 최소 공배수  (0) 2021.06.10
[BOJ/백준] 21918 전구  (0) 2021.06.10
[BOJ/백준] 17470 배열 돌리기 5  (0) 2021.06.10

+ Recent posts