본문 바로가기
Algorithm/etc

[파이썬] 백준 - 9단계 약수, 배수와 소수

by 베짱이28호 2023. 4. 8.

[파이썬] 백준 9단계 - 약수, 배수와 소수

 


배수와 약수 (5086)

while True :
    a,b = map(int,input().split())
    if a==0 and b==0:
        break
    else:
        if b%a == 0 :
            print('factor')
        elif a%b==0:
            print('multiple')
        else:
            print('neither')

소수 (2581)

M = int(input())
N = int(input())
b = list(range(M,N+1))
prime  = []

for i in range(len(b)): # 소수찾는루프
    if b[i] == 1 : # 1제외
        continue
    elif b[i] == 2 : # 2예외
        prime.append(b[i])
        continue
    else : # 3부터
        for j in range(2,b[i]+1):
            if (b[i]%j == 0) and (j != b[i]) : # 나뉘면 다음
                break
            if j == b[i] :
                prime.append(b[i])
if prime == []:
    print(-1)
else :
    print(sum(prime))
    print(min(prime))

소수 찾기 (1978)

N = int(input())
b = list(map(int,input().split()))
count = 0

for i in range(N):
    if b[i] == 1 : # 1제외
        continue
    elif b[i] == 2 : # 2예외
        count += 1
        continue
    else : # 3부터
        for j in range(2,b[i]+1):
            if (b[i]%j == 0) and (j != b[i]) : # 나뉘면 다음
                break
            if j == b[i] :
                count += 1
print(count)

소수 입력 N이 2부터 N-1까지는 안나누어 떨어지는거 이용


소인수 분해 (11653)

N = int(input())
i=2
while True:
    if N == 1:
        break

    if N%i == 0 :
        print(i)
        N /= i
    else :
        i += 1

약수 구하기 (2501)

N,K = map(int,input().split())
temp = []
if K == 1:
    print(1)
else:
    for i in range(1,int(N**(1/2))+1):
        if N%i == 0:
            temp.append(i)
            temp.append(int(N/i))
    a = set(temp)
    b = list(temp)
    b.sort()
    if len(b)<K:
        print(0)
    else :
        print(b[K-1])

약수들의 합 (9506)

while True:
    n = int(input())
    if n == -1:
        break
    else:
        temp = []
        for i in range(1,int(n**(1/2))+1):
            if n%i == 0 :
                temp.append(i)
                temp.append(int(n//i))
        a = set(temp)
        b = list(a)
        b.sort()

        if sum(b)-n == n:
            for i in range(len(b)-1):
                if i == 0:
                    print(n,'=',b[i],end=' ')
                else :
                    print('+',b[i],end=' ')
        else : 
            print(f'{n} is NOT perfect.')

댓글