에라토스테네스의 체 3

[알고리즘 - Python] BOJ 16563

https://www.acmicpc.net/problem/16563 16563번: 어려운 소인수분해 첫째 줄에는 자연수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 자연수 ki (2 ≤ ki ≤ 5,000,000, 1 ≤ i ≤ N)가 N개 주어진다. www.acmicpc.net from math import sqrt _ = int(input()) # 필요 없음 k = list(map(int, input().split())) # 자연수들 M = max(k) # 자연수의 최댓값 arr = list(i for i in range(M + 1)) # arr을 초기화 함 for i in range(2, int(sqrt(M)) + 1): # 2부터 M의 제곱근까지만 계산해도 됨 if ar..

[알고리즘 - Python] BOJ 1929

https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net n, m = map(int, input().split()) # 두 개의 자연수 arr = [True] * (m + 1) # True은 소수라는 뜻 arr[0] = arr[1] = False # False은 소수가 아님 # for i in range(2, int((m + 1) ** 0.5)): # 최고 숫자의 루트로 계산해도 되긴 함 for i in range(2, m + 1): # 2부터 최고 숫자까지 에라토스테네스의 체를 계산..

[알고리즘 - Python] BOJ 1978

https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net _ = int(input()) # 필요 없음 N = list(map(int, input().split())) # 숫자들을 입력 받음 arr = [True] * (max(N) + 1) # True은 소수라는 뜻 arr[0] = arr[1] = False # False은 소수가 아님 for i in range(2, max(N) + 1): # 2부터 최고 숫자까지 에라토스테네스의 체를 계산함 if arr[i]: for j in range(i * 2, max(N) + 1,..