백준 4948, 베르트랑 공준

2021. 10. 21. 16:40CodingTest

문제

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

 

4948번: 베르트랑 공준

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

www.acmicpc.net

 

문제요약

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

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

 

문제풀이

소수를 판별하기 위한 대표적인 방법은 어떤 수 N이 주어질때 2~N의 양의 제곱근까지 N이 나누어 떨어질때 합성수로 판별하고, 아닌 경우 소수로 판별합니다.

어떤 수 N이 주어질때 시작변수는 N+1이 되고 끝 변수는 2*N으로 저장하고 시작변수와 끝 변수 범위에서 소수를 구하면 됩니다.

 

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
	
	public static boolean isPrime(int n)
	{
		for(int i=2; i<=(int)Math.sqrt(n); i++)
		{
			if(n%i==0)
			{
				return false;
			}
		}
		return true;
	}
	public static int solution(int n)
	{
		int start = n+1;
		int end = n*2;
		int cnt=0;
		for(int i=start; i<=end; i++)
		{
			if(isPrime(i) && i>1)
			{
				cnt++;
			}
		}
		return cnt;
	}
	public static void main(String args[]) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		while(true)
		{
			int n = Integer.parseInt(br.readLine());
			if(n==0)
			{
				break;
			}
			System.out.println(solution(n));
		}
		
	}
}

 

'CodingTest' 카테고리의 다른 글

백준 17298, 오큰수  (0) 2022.01.03
백준 1085, 직사각형에서 탈출  (0) 2021.10.22
백준 1929, 소수 구하기  (0) 2021.10.21
백준 11053, 가장 긴 증가하는 부분 수열  (0) 2021.10.14
백준 2579, 계단 오르기  (0) 2021.10.06