[Problem Solving/Java] 백준 4948번 - 베르트랑 공준

2024. 1. 2. 13:49·알고리즘 문제 풀이 (Problem Solving)

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

 

4948번: 베르트랑 공준

베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼

www.acmicpc.net

문제

베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다.

이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다.

예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23)

자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다.

입력의 마지막에는 0이 주어진다.

출력

각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력한다.

첫 번째 시도

import java.io.BufferedReader; 

import java.io.IOException; 

import java.io.InputStreamReader; 

import java.util.ArrayList; 

 

public class Main { 

 

public static void main(String[] args) throws IOException { 

 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

 

while (true) { 

int a = Integer.parseInt(br.readLine()); 

int count = 0; 

boolean[] numcheck = new boolean[a*2 + 1]; 

 

if(a==1) { 

System.out.println(1); 

continue; 

}else if(a==0) { 

break; 

} 

 

for (int i = 0; i <= a * 2; i++) { 

numcheck[0] = false; 

} 

 

for (int i = 2; i * i <= a * 2; i++) { 

if (!numcheck[i]) { 

for (int j = i * i; j <= a*2; j += i) { 

numcheck[j] = true; 

} 

} 

} 

 

for (int i = a+1; i <= a * 2; i++) { 

if (!numcheck[i] && i != 1 && i != 0) { 

count++; 

} 

 

} 

 

System.out.println(count); 

count=0;	 

} 

} 

}

해결 방법

  • 이전 문제에서 코드 조금 수정했다. a부터 b 까지가 아닌 a보다 크고 a*2 보다 작은 수를 count 하도록 수정했다. 
반응형

'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글

[Problem Solving/Java] 백준 3009번 - 네 번째 점  (1) 2024.01.02
[Problem Solving/Java] 백준 1085번 - 직사각형에서 탈출  (0) 2024.01.02
[Problem Solving/Java] 백준 1929번 - 소수 구하기  (0) 2024.01.02
[Problem Solving/Java] 백준 2581번 - 소수  (0) 2023.08.30
[Problem Solving/Java] 백준 1978번 - 소수 찾기  (0) 2023.08.30
'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글
  • [Problem Solving/Java] 백준 3009번 - 네 번째 점
  • [Problem Solving/Java] 백준 1085번 - 직사각형에서 탈출
  • [Problem Solving/Java] 백준 1929번 - 소수 구하기
  • [Problem Solving/Java] 백준 2581번 - 소수
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • 개발 (Development) (165)
        • Algorithm (1)
        • Angular (1)
        • AWS (6)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (31)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (11)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오답노트
    리눅스 마스터 2급 2차
    DevOps
    python
    docker
    AWS
    백준온라인저지
    백준
    백준알고리즘
    데이터분석
    Linux
    Linux master
    deepseek
    Vue.js
    java
    springboot
    PostgreSQL
    javascript
    pandas
    백준자바
    timescaledb
    JPA
    자바
    리눅스 마스터 2급
    ADsP
    MyBatis
    Kafka
    JSON
    Spring boot
    Kubernetes
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Problem Solving/Java] 백준 4948번 - 베르트랑 공준
상단으로

티스토리툴바