본문 바로가기

PS/BOJ : 단계별로 풀어보기

백준 [단계별로 풀어보기]: (9단계) "약수, 배수와 소수", python

반응형

백준 [단계별로 풀어보기]: (9단계) "약수, 배수와 소수", python

 

1. 문제번호 및 정답비율

9단계 약수, 배수와 소수 : 문제번호 및 정답 비율

2. 문제별 필요 지식 및 풀이 포인트

더보기

#소수 찾기 1978

#다시풀기


3. 문제별 풀이 코드

#배수와 약수 5086
while True:
    a, b = map(int, input().split())
    if a>b:
        if a % b == 0:
            print('multiple')
        else:
            print('neither')
    elif a<b:
        if b % a ==0:
            print('factor')
        else:
            print('neither')
    elif a==b and b==0:
        break
        
        
#약수 구하기 2501
n, k = map(int, input().split()) #6 3

arr = []
for i in range(1, n+1):
    if n % i == 0:
        arr.append(i) #[1 2 3 6]
if len(arr) < k:
    print(0)
else:
    print(arr[k-1])
    
    
#약수들의 합 9506
# '구분자'.join(리스트)
while True:
    n = int(input())
    if n == -1:
        break
        
    arr = []
    for i in range(1,n):
        if n % i == 0:
            arr.append(i)
            
    if sum(arr) == n: #약수의합 = n이면, n이 완전수이면
        print(n,'=',' + '.join(str(i) for i in arr)) #TypeError: sequence item 0: expected str instance, int found
    else:
        print(n, 'is NOT perfect.')


#소수 찾기 1978
'''다시풀기'''
n = int(input()) #4
arr = list(map(int, input().split())) #1 3 5 7

cnt = 0 #소수의 개수
for i in arr:
    for j in range(2, i+1): #1은 소수가 아니므로, 2부터 i까지
        if i % j == 0:
            if j == i: #숫자가 i 도달 후 나누어지면, 그 수는 소수로 볼 수 있기에 +1해준다
                cnt += 1
            break
print(cnt) #3


#소수 2581
m = int(input())
n = int(input())

number = []
for i in range(m,n+1): #m~n수
    error = 0
    if i > 1: #1은 소수가 아니므로 제외
        for j in range(2,i): #2~i에서 나눠지는 수는 소수가 아니므로 error +1
            if i%j == 0:
                error += 1
                break
        if error == 0: #error가 없으면 소수
            number.append(i)
if len(number) > 0:
    print(sum(number))
    print(min(number))
else:
    print(-1)


#소인수분해 11653
n = int(input())

for i in range(2,n+1): #2부터 나누기
    if n % i == 0:
        while n % i == 0: #나눌 수 없을 때까지 나누기, 이때 n값 n/i로 초기화 시켜주면서
            print(i)
            n = n/i
반응형