예에전에 푼 문제 정리
배수와 약수 - 5086
while True:
a, b = map(int, input().split())
if a == 0 and b == 0:
break
elif b%a == 0:
print("factor")
elif a%b == 0:
print("multiple")
elif a%b != 0 or b%a != 0:
print("neither")
약수 구하기 - 2501
N의 약수를 구하고 리스트를 만들어서 오름차순으로 정렬 후 K번째 수를 출력하면됨. 약수가 없으면 0출력
import sys
n, k = map(int, sys.stdin.readline().rstrip().split())
li = []
for i in range(1, int(n**(1/2))+1):
if n%i == 0:
li.append(i)
if i**2!=n:
li.append(n//i)
li.sort()
if len(li) < k:
print(0)
else:
print(li[k-1])
제곱근까지만 계산을 해서 시간복잡도를 줄임
시간 복잡도 : O(N^(1/2))
약수들의 합 - 9506
for문 안에 리스트 l을 넣어서 초기화시켜줘야함
a = []
while True:
n = int(input())
if n == -1:
break
a.append(n)
for n in a:
l = []
for i in range(1, n):
if n%i == 0:
l.append(i)
if sum(l) == n:
print(n , "=" , " + ".join(str(i) for i in l))
else:
print(n , "is NOT perfect.")
소수 찾기 - 1978
n = int(input())
sec_n = list(map(int, input().split()))
count = 0
for n in sec_n:
if n != 1:
for i in range(2, n):
if n % i == 0:
break
else:
count+=1
print(count)
소수 - 2581
m = int(input())
n = int(input())
prime = [ ]
for i in range(m, n+1): #m부터 n까지
if i > 1: #1보다 큰 수
for j in range(2, i):
if (i % j) == 0:
break
else:
prime.append(i)
if len(prime) > 0:
print(sum(prime))
print(min(prime))
else:
print(-1)
소인수분해 - 11653
import math
n = int(input())
i = 2
while i <= math.sqrt(n):
if n % i != 0:
i += 1
else:
print(i)
n //= i
if n > 1:
print(n)
'PS > BOJ' 카테고리의 다른 글
단계별: 시간 복잡도 (24262, 24263, 24264, 24265, 24266, 24267, 24313) (python3) (1) | 2023.12.02 |
---|---|
명령 프롬프트 - 1032 (python3) (1) | 2023.11.23 |
단계별: 일반수학 1 (2745, 11005, 2720, 2903, 2292, 1193, 2869) (python3) (0) | 2023.10.31 |
색종이 - 2563 (python3) (1) | 2023.10.31 |
9/4 ~ 9/10 (Clang) (0) | 2023.09.09 |