
행복이는 길이가 인 수열 에서 소수들을 골라 최소공배수를 구해보려고 한다.
행복이를 도와 이를 계산해주자.
첫째 줄에 수열 의 길이 이 주어진다.
그 다음줄에는 수열 의 원소 가 공백으로 구분되어 주어진다.
답이 263 미만인 입력만 주어진다.
첫째 줄에 소수들의 최소공배수를 출력한다.
만약 소수가 없는 경우는 -1을 출력한다.
예제 입력 1
5
2 3 5 6 8
예제 출력 1
30
수열 중에 소수는 2, 3, 5가 있다.
예제 입력 2
4
4 16 64 256
예제 출력 2
-1
소수가 없으므로 -1 이다.
from math import lcm
n = 1000000
a = [0,0] + [1] * (n+1)
for i in range(2,int(n**0.5)+1) :
if a[i] :
for j in range(i*2,n+1,i) :
a[j] = 0
command = 'lcm('
N = int(input())
A = list(map(int,input().split()))
for i in A :
if a[i] :
command += str(i) + ','
if command == 'lcm(' :
print(-1)
else :
command = command.rstrip(',') + ')'
print(eval(command))
참 근래 짠 코드중 가장 더럽게 짠 것 같다. 최적화된 에라토스테네스의 체를 사용해 1,000,000 이하의 모든 소수를 판별해놓고 A를 입력받아 A가 소수라면 command 변수의 str 형식으로 값을 저장하고.. eval 함수를 통해 최종 출력해줬다. 코드가 이상해서 글로 풀어쓰기도 어렵네
참 내가 짠 코드중 가장 이상한 코드일 것 같다.