코딩테스트/백준) 단계별로 풀기

백준- 단계별로 풀어보기| 9단계- 약수, 배수와 소수

영최 2023. 4. 13. 12:21
728x90
단계 문제 번호 제목 내 코드 코드 비교
1 5086 배수와 약수 while(True):
    a, b  = map(int,input().split())
    if (a == 0 and b == 0):
        break
    if (b % a == 0):
        print('factor')
    elif (a % b == 0):
        print('multiple')
    else:
        print('neither')
 
 
2 2501 약수 구하기 a, n  = map(int,input().split())

cnt = 0 
for i in range(a):
    i = i+1 #1부터 n까지
    if a % i == 0:
        cnt += 1
        if cnt == n:
            print(i)
if cnt < n:
    print(0)
 
 
3 9506 약수들의 합 while(True):
    n =  int(input())
    if n == -1:
        break
    sum = 0
    li = []
    for i in range(n-1): #자기자신 제외
        i = i+1  
        if n%i == 0:
            sum+=i
            li.append(i)
            
    if sum == n:
        print(f"{n} = {(' + ').join(map(str,li))}")
    else:
        print(f"{n} is NOT perfect.")
 
 
4 1978 소수 찾기 n =  int(input())
li = list(map(int,input().split()))

cnt2 = 0
for num in li:
    cnt = 0
    for i in range(num-1): #자기자신 제외
        i +=1 
        if num % i == 0:
            cnt +=1
    if cnt == 1:
        cnt2 +=1
print(cnt2)
 
 
5 2581 소수 m =  int(input())
n =  int(input())

sum = 0
first = 0
for num in range(m,n+1):
    cnt = 0
    if num > 1:
        for i in range(2,num):
            if num %i ==0:
                cnt +=1
                break
        if cnt == 0:
            sum+=num
            first +=1
        if ==1:
            first_num =  num

if sum == 0:
    print(-1)

else:
    print(sum)
    print(first_num)
m =  int(input())
n =  int(input())

li = []
for num in range(m,n+1):
    cnt = 0
    if num > 1:
        for i in range(2,num):
            if num %i ==0:
                cnt +=1
                break
        if cnt == 0:
            li.append(num)

if len(li) == 0:
    print(-1)

else:
    print(sum(li))
    print(min(li))
왜 틀렸는지 모르겠음
그냥 첫번째 수와 합을 구할때 배열로 구하자
6 11653 소인수분해 n = int(input())
li = []
k = n
if n > 1:
    for i in range(1,n):
        i +=1
        while(True):
            if k%i == 0:
                k = k//i
                print(i)
            else:
                break

else:
    print('')
n = int(input())


if n > 1:
    for i in range(2,n+1): 
        if n%i == 0:
            while(n%i == 0):
                print(i)
                n = n/i
else:
    print('')
소인수분해는 자기자신도 나누는 것에 포함됨
출력은 다 맞는데 틀렸다면 범위를 확인해보자
728x90