[백준] 2581 - 소수



문제 정보


  • 문제 이름: 소수
  • 문제 번호: 2581
  • 문제 유형: -
  • 풀이 언어: C
  • 제출 시간: 2019년 5월 11일 19시 45분 27초
  • 원본 링크: https://www.acmicpc.net/problem/2581



문제

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.

예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.



입력

입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.

M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.



출력

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

단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.



결과 - 소스코드 및 랭크






메모

어제에 이어 소수 관련 문제를 풀었다.

오늘은 M과 N 사이의 값에 들어가는 소수의 총 합과 최솟값을 찾는 문제였는데 시간이 꽤 걸리는 것을 보고 상위권 분들이 푼 방법은 어떻게 되는지 한 번 확인해보았다.

확인해보니 나 같은 경우에는 2부터 M까지의 숫자를 모두 나눠가면서 확인했는데 빨리 푸신 분들의 경우 제곱 계산식을 이용한 분들이 꽤 있었다. 다른 소수 관련 문제를 풀 때 응용해서 써봐야겠다.

Author

Alec J

Posted on

2019-05-11

Updated on

2021-02-09

Licensed under