Ⅰ. 프로그래밍
[CodeUp] 1284 : 암호 해독
agencies
2024. 4. 6. 11:21
처음에는 2중 for문으로 시도를 했으나 시간초과가 됐습니다.
문제 접근 방법
- 우선 1, 2가 주어지는 경우 wrong number가 출력된다
- 어떤 값이 주어졌을때 소수 x 소수로 이뤄지지 않은 수라면 wrong number 출력
- 반복을 할 때 입력된 값보다 / 2 를 해서 불필요한 계산을 반으로 줄임
- 만약 입력한 값이 어떤 수로 나눠떨어진다면, 그 나눠떨어지는 수를 소수인지를 검증하는 방식을 적용해야 함
- 어떤수가 소수인지를 확인하고 만약 소수라면 출력후 종료, 그렇지 않으면 다시 나누어 떨어지는 값을 찾는다.
a=int(input())
m=0;z=1
if a==1 or a==2:
print("wrong number")
m=1
for i in range(2,a//2+1):
if m==1:break
if a%i==0:
j = a//i
for k in range(2,j//2+1):
if j%k==0:
z = 0
break
if z==1:
print(i,j)
m=1
break
if m==0:
print("wrong number")