Python/online judge

백준 [2581.소수] | Python

구름솜:D 2024. 1. 10. 18:21
728x90

✏️ 문제

https://www.acmicpc.net/problem/2581

 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

 

✏️ 풀이방법

1. 특정범위안의 소수를 찾아서 리스트(prime)에 담는다.

2. 리스트(prime)의 총합을 구한다. 

3. 소수가 없는 경우에는 -1을 출력해야하기 때문에 리스트(prime)의 길이가 0이면 소수가 없는것을 활용했다.

 

 

📌 코드

m = int(input())
n = int(input())
# m이상 n이하의 자연수
nums = [int(i) for i in range (m,n+1)]
# 소수찾기(1과 자기자신만을 약수로 갖는 수)
prime = []
for i in nums:
    for j in range(2,i+1):
        if i % j ==0:
            if i == j:
                prime.append(j)
            break
if len(prime) == 0:
    print(-1)
else:
    print(sum(prime))
    print(prime[0])
m = int(input())
n = int(input())
prime = []
for i in range(m,n+1):
    divisor = []
    if i == 1:
        continue
    for j in range(1,i+1):
        if i % j == 0:
            divisor.append(i)
    if len(divisor) == 2:
        prime.append(i)
if len(prime) == 0:
    print(-1)
else:
    print(sum(prime))
    print(prime[0])
m = int(input())
n = int(input())
# m이상 n이하의 자연수
nums = [int(i) for i in range (m,n+1)]
# 소수찾기(1과 자기자신만을 약수로 갖는 수)
prime = []
for i in nums:
    for j in range(2,i+1):
        if i % j ==0:
            if i == j:
                prime.append(j)
            break
if len(prime) == 0:
    print(-1)
else:
    print(sum(prime))
    print(prime[0])

 

📌 결과

#입력
60
100

#출력
620
61
#입력
64
65

#출력
-1

 

 

🤔 시행착오.1

m = int(input())
n = int(input())
# m이상 n이하의 자연수
nums = [int(i) for i in range (m,n+1)]
# 소수찾기(1과 자기자신만을 약수로 갖는 수)
prime = []
for i in nums:
    for j in range(2,i+1):
        if i % j ==0:
            if i == j:
                prime.append(j)
            break
print(sum(prime))
print(prime[0])
m = int(input())
n = int(input())
prime = []
for i in range(m,n+1):
    divisor = []
    if i == 1:
        continue
    for j in range(1,i+1):
        if i % j == 0:
            divisor.append(i)
    if len(divisor) == 2:
        prime.append(i)
print(sum(prime))
print(prime[0])
m = int(input())
n = int(input())
# m이상 n이하의 자연수
nums = [int(i) for i in range (m,n+1)]
# 소수찾기(1과 자기자신만을 약수로 갖는 수)
prime = []
for i in nums:
    for j in range(2,i+1):
        if i % j ==0:
            if i == j:
                prime.append(j)
            break
print(sum(prime))
print(prime[0])

- 출력시 -1 코드 작성 안해서 런타임에러

 

 

 

 

📝 메모

- 문제풀이 시 입출력 확인 꼼꼼하게 하기

 

 

📒 다시보기

 

백준[1978.소수 찾기] | Python

✏️ 문제 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net ✏️ 풀이방

somin0416.tistory.com