https://www.acmicpc.net/problem/4948
4948번: 베르트랑 공준
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼
www.acmicpc.net
풀이 과정
- 베르트랑 공준에 따르면 2이상의 자연수 n에 대하여 n<p<2n을 만족하는 소수 p가 반드시 존재함
- 에라토스테네스의 체를 이용하여 소수를 만났을 때 count 증가
- .n이 소수일 때는 count에서 -1
정답
import java.util.Scanner;
public class Main {
public static void Eratosthenes(int arr[], int n)
{
for(int i=2; i<=n; i++)
{
arr[i] = i;
}
for(int i=2; i*i<=n; i++)
{
if(arr[i] ==0) continue;
for(int j=i*2; j<=n; j+=i)
{
arr[j] = 0;
}
}
}
//소수 판별
public static boolean isPrime(int n)
{
if(n<2)
return false;
for(int i=2; i<=Math.sqrt(n); i++)
{
if(n%i==0) return false; //나누어 떨어지면 소수 아님
}
return true;
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while(true)
{
int n = sc.nextInt();
if(n==0)
break;
int arr[] = new int[n*2+1];
int count=0; //소수 개수
Eratosthenes(arr,n*2);
for(int i=n; i<=n*2; i++)
{
if(arr[i]!=0)
{
count++;
}
}
if(isPrime(n)) //n이 소수라면 -1
{
System.out.println(count-1);
}
else
{
System.out.println(count);
}
}
}
}
'Java > 백준' 카테고리의 다른 글
[JAVA] 백준 14425 문자열 집합 (0) | 2024.02.12 |
---|---|
[JAVA] 백준 17103 골드바흐 파티션 (0) | 2024.02.10 |
[JAVA] 백준 1929 소수 구하기 (1) | 2024.02.10 |
[JAVA] 백준 4134 다음 소수 (1) | 2024.02.10 |
[JAVA] 백준 2485 가로수 (1) | 2024.02.10 |