티스토리 뷰
728x90
문제
자연수 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을 출력한다.
#include <stdio.h>
int main(){
int a, b;
scanf("%d\n%d", &a, &b);
if(a>0 && b>0 && a<=10000 && b<=10000){
int sum=0, min=1000001;
for(int i=a; i<=b; i++){
for(int j=2; j<i; j++){
if(i%j==0){
break;
}
if(j==i-1){
sum+=i;
if(i<min){
min=i;
}
}
}
}
if(a < b && min != 1000001 && a<=2)
printf("%d\n2", sum+2);
else if(a < b && min != 1000001 && a>2)
printf("%d\n%d", sum, min);
else if(a==min){
printf("%d\n%d", min, min);
}
else if(a==2 && b==2){
printf("2\n2");
}
else
printf("-1");
}
}
1. 범위를 입력받는다.
2. 범위 안에서 소수를 찾기위해 이중반복문을 사용해준다.
3. 소수를 찾았으면 그 찾은 소수들의 합을 sum에 저장하고, 그중 가장 작은수를 min에 저장한다.
4. 입력받은 수의 범위 내에 소수가 있다면 sum, min을 출력하고
5. 없다면 -1을 출력한다.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- github
- 정적라우팅
- 힙오버플로우
- 포트포워딩
- jump king
- 라우터
- 설정법
- ospf config
- 점프킹설치
- 패킷트레이서
- 과제
- 스택 버퍼 오버플로우
- 라우팅
- 점프킹
- 게이트웨이
- vmware key
- 메트릭
- 설치법
- 버퍼오버플로우
- 동적라우팅
- 디폴트라우팅
- 코드업
- Brave
- dr/bdr
- vmware pro
- 네트워크
- 오버플로우
- vmware player
- 무료설치
- ospf
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
250x250
