8단계 - 1929번https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
문제점
1. 검색해보니 에라토스테네스의 체 라는 방법을 활용한 코드작성이 가장 유용하다는 것을 알게되었다
-> 출처의 코드를 많이 참고했기 때문에, 추가적인 공부가 필요한 상황
풀이 - 1 (에라토스테네스의 체)
#include <stdio.h>
int main(void){
int m,n,arr[1000001] = {0,};
arr[1] = 1;
scanf("%d %d", &m, &n);
for(int i = 2; i <= n; i++){
for(int j = 2; i * j <= n; j++){
arr[i*j] = 1;
}
}
for(int i = m; i <= n; i++){
if(arr[i] == 0)
printf("%d\n",i);
}
return 0;
}
풀이 - 2 (최소시간)
출처: https://detective.tistory.com/14
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
int arr[1000001];
int main() {
int m, n;
int i, j;
scanf("%d %d", &m, &n);
for (i = 2; i <= n; i++) {
if (!arr[i]) {
for (j = i + i; j <= n; j += i)
arr[j] = 1;
}
if (i >= m && arr[i] == 0) printf("%d\n", i);
}
return 0;
}
'백준(C언어) > 22년 8월' 카테고리의 다른 글
8월 11일(목) - 8단계(9020번 *실패) (0) | 2022.08.11 |
---|---|
8월 10일(수) - 8단계(4948번) (0) | 2022.08.10 |
8월 8일(월) - 8단계(11653번) (0) | 2022.08.08 |
8월 7일(일) - 8단계(2581번) (0) | 2022.08.07 |
8월 5일(금) - 8단계(1978번) (0) | 2022.08.05 |
댓글