백준 단계별로 풀어보기 - 기본 수학 2 (Python)
Updated:
단계별로 풀어보기의 기본 수학2 파트입니다.
이 게시물은 제가 문제를 풀 때 마다 업데이트 할 예정입니다.
소수 찾기 - 1978번
n = int(input())
a = list(map(int, input().split()))
ans = 0
for i in a:
error = 0
if i > 1:
for j in range(2, i):
if i % j == 0:
error = 1
break
if error == 0:
ans += 1
print(ans)
소수 - 2581번
m = int(input())
n = int(input())
a = list(range(m, n + 1))
min_ans = n
sum_ans = 0
for i in a:
error = 0
if i > 1:
for j in range(2, i):
if i % j == 0:
error = 1
break
if error == 0:
min_ans = min(min_ans, i)
sum_ans += i
if sum_ans == 0:
print(-1)
else:
print(sum_ans)
print(min_ans)
소인수분해 - 11653번
n = int(input())
for i in range(2, int(n ** 0.5) + 1):
while n % i == 0:
n = n // i
print(i)
if n > 1:
print(n)
소수 구하기 - 1929번
m, n = map(int, input().split())
a = [False] * (n + 1)
for i in range(2, n + 1):
if a[i] == False:
for j in range(i * 2, n + 1, i):
a[j] = True
if m <= i <= n:
print(i)
베르트랑 공준 - 4948번
def get_prime_array(n : int):
if n < 2:
return []
n += 1
sieve = [1] * (n // 2)
for i in range(3, int(n ** 0.5) + 1, 2):
if sieve[i // 2] == 1:
k = i ** 2
for j in range(k // 2, n // 2, i):
sieve[j] = 0
return sieve
def get_prime_number(a):
if type(a) == int:
a = get_prime_array(a)
ans = [2]
for i in range(1, len(a)):
if a[i] == 1:
ans.append(2 * i + 1)
return ans
def search(p, n):
l, r = 0, len(p) - 1
while l <= r:
m = (l + r) // 2
if p[m] > n:
r = m - 1
else:
l = m + 1
return l
s = get_prime_number(123456 * 2)
while True:
n = int(input())
if n == 0:
break
print(search(s, n * 2) - search(s, n))
골드바흐의 추측 - 9020번
x = [False, False, True] + [True, False] * 5000
for i in range(3, 101, 2):
if x[i]:
x[i * 2::i] = [False] * len(x[i * 2::i])
for _ in range(int(input())):
a = int(input())
if a == 4:
print(2, 2)
continue
half_a = a // 2
if half_a % 2 == 0:
half_a += 1
for i in range(half_a, a, 2):
if x[i] and x[a - i]:
print(a - i, i)
break