agencies

[CodeUp] 1284 : 암호 해독 본문

Ⅰ. 프로그래밍

[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")