본문 바로가기

# 02/Swift - CTP

[Swift] 백준! 2061번 - 좋은 암호

반응형

https://www.acmicpc.net/problem/2061

 

2061번: 좋은 암호

암호화 방식 중에는 소수를 이용하는 것들이 많다. 보통은 매우 큰 두 개의 소수를 선택하고, 두 소수를 곱한 값을 암호화에서의 키로 사용하고는 한다. 이러한 방법이 좋은 이유는 일반적으로

www.acmicpc.net

import Foundation

func isPrime(num: Int) -> Bool {
    if(num<4) {
        return num == 1 ? false : true
    }
    for i in 2...Int(sqrt(Double(num))) {
        if(num % i == 0) { return false }
    }
    return true
}

func mod(_ s:String, _ p:Int) -> Int {
    var ret = 0
    for c in s {
        ret = (ret*10+Int(String(c))!)%p
    }
    return ret
}

let l = readLine()!.split(separator: " ").map{ String($0) }
let k = l[0]
let m = Int(l[1])!
var a = -1
for i in 1...m-1 {
    if isPrime(num: i) && mod(k, i) == 0 {
        a = i
        break
    }
}
if a == -1 {
    print("GOOD")
} else {
    print("BAD \(a)")
}
반응형