https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 웬만한 소수 문제는 에라토스테네스의 체를 사용해 풀면 시간내에 해결 할 수 있는듯 하다. 입력한 수를 절반으로 나눈 후 절반으로 나눈 수가 소수이면 절반으로 나눈수에 입력한 수를 뺀 수를 소수인지 판별 한 후 소수인지 판별, 그 후 둘다 소수이면 출력을 하도록 했다. import Foundation var repeatNum = Int(readLine()!)! for _ in 1..
https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 바로 전에 풀었던 소수찾기 문제에 약간 손을 보면 된다. 이 문제 역시 에라토스테네스의 체를 사용하여 시간을 단축시키 풀 수 있다. import Foundation while true{ var sum = 0 var input = Int(readLine()!)! var n = 2*input var numList = [Int]() var boolList = Array(repeating: fal..
https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 에라토스테네스의 체를 사용하여 시간내에 풀 수 있다. 2부터 모든 소수를 구하는 이유는 100부터 시작할 경우 100은 지워지지 않기 때문에 2부터 범위까지의 모든 소수를 구한 수 시작수이상의 수 부터 출력을 하면 된다. import Foundation let input = readLine()!.split(separator: " ").map { Int($0)! } let m = input[0] let n = input[1] va..
https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 인수분해만 하면 되는 간단한 문제. 2로 계속나누다가 2로 나누지 못할경우 3, 3으로 나누지 못할경우 4.... 반복해서 나누는 수가 나눠지는 수보다 커지면 반복을 종료한다. import Foundation var input = Int(readLine()!)! var num = 2 func calc(input: Int){ var inputNum = input while inputNum%num < num { if inputNum == 1 { break } if inputNum%num == 0 { inputNum = ..
https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 소수일시 배열에 넣어서 저장한다. 바로 전에 풀었던 문제와 딱히 다를게 없는 문제. import Foundation let m = Int(readLine()!)! let n = Int(readLine()!)! var list:[Int] = [] var count = 0 func findDemical(input: Int)->Int{ if input == 1{ return 0 } for item in 2..
https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 함수로 푸니 좀더 수월했다. 반복문을 끝까지 돌아서 나왔을 경우(소수)에는 1을 리턴, 중간에 0으로 나뉘면 0을 리턴 하게해 수가 저장된 배열에 소수와 아닌수를 구별 해 reduce로 합쳐서 출력했다. import Foundation var num = readLine() var line = readLine()!.split(separator: " ").map({Int($0)!}) var count = 0 func calc(input: Int) -> Int { if ..