일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- scapesydneycentral
- c언어
- BOJ
- 교통안전법
- 호주
- 군전세객차
- 교환학생짐싸기리스트
- Scape
- 시드니기숙사
- 시드니
- 교환학생
- 교통안전관리론
- 백준
- 열차운전
- C
- 교통법규
- 호주기숙사
- subclass500
- 호주휴대폰개통
- 호주비자신체검사
- 호주학생비자
- 나무꾼이다솜
- 철도교통안전관리자
- 교환학생짐
- 1421번
- 운전이론
- C++
- 교환학생짐싸기
- 철도공학
- UTS
- Today
- Total
탐정사무소
1929번 소수 구하기(C) 본문
11수 만에 성공했다.
분명 나는 맞게 했다고 생각했는데 왜 계속 틀렸다고 하는지
아직도 사실 모르겠다.
https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
사전지식
% 연산을 모든 숫자들에게 행하여 0이 나오면 소수가 아니다, 이런 방식으로 하면 시간 초과가 뜬다.
하긴 이렇게 쉽게 풀리면 실버 문제가 아니지...
많은 분들이 추천하는 방법인 '에라토스테네스의 체'를 쓰지 않고서는 풀기 어려운 문제이다.
2 이외의 모든 2의 배수를 지우고, 그 다음에는 3 이외의 모든 3의 배수를 지우면서 나아가는 방식이다.
해결과정
위와 같은 방법으로 2번째~9번째까지 시도했는데, 계속 틀렸다고 하더라.
비주얼스튜디오로 실행했을 때도 아무 문제 없었는데 백준은 역시 자비란 없다.
설상가상으로 배열요소가 1,000,000개를 지역변수에서 선언하니까 이건 vs에서도 에러가 떴다.(이건 전역변수로 선언함으로써 해결했다)
아직도 앞 코드가 왜 실패한건지 이유는 모르겠고, 어쩔 수 없이 다른 분의 코드를 참고했다(거의 동일하다고 봐야하나...감사합니다)
https://m.blog.naver.com/mjk270/221195689474
소수 구하기 (baekjoon 1929) - c 언어 "에라토스테네스 체"
문제M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.입력첫째 줄에 자연수 M과 N이 빈 칸...
blog.naver.com
코드
#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;
}
결과
'학과공부 > 백준' 카테고리의 다른 글
2108번 통계학(C) (0) | 2021.08.15 |
---|---|
1978번 소수 찾기(C) (0) | 2021.08.14 |
1966번 프린터 큐(C) (0) | 2021.08.12 |
15552번 빠른 A+B(C/C++) (0) | 2021.08.11 |
1920번 수 찾기(C) (0) | 2021.08.11 |