문제 https://www.acmicpc.net/problem/4948
4948번: 베르트랑 공준
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼
www.acmicpc.net
풀이
소수 찾는 문제는 에라토스테네스의 체를 항상 사용하는 듯 하다.
1부터 2n 까지의 소수를 찾는 게 아니라, n부터 2n까지의 소수를 찾는 문제라서 일단 처음부터 찾아준 후에,
n부터 몇개인지 count 했다.
에라토스테네스의 체는 2부터 소수를 찾아서 자기 자신을 제외한 배수들을 모두 지워서 소수를 찾아내는 방식이다.
코드
#include <iostream>
using namespace std;
bool arr[123456*2];
int main()
{
while(1)
{
int n;
cin>>n;
if(n==0) break;
for(int i=0; i<=2*n; i++)
{
arr[i]=0;
}
int cnt=0;
for(int i=2; i<=2*n; i++)
{
if(arr[i]==0) arr[i]=0;
for(int j=i+i; j<=2*n; j+=i)
{
if(arr[j]!=1) arr[j]=1;
}
}
for(int i=n+1; i<=2*n; i++)
{
if(arr[i]==0) cnt++;
}
cout<<cnt<<'\n';
}
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 1269 - 대칭 차집합 (0) | 2022.06.07 |
---|---|
백준 9613 - GCD 합 (0) | 2022.06.05 |
백준 17413 - 단어 뒤집기 (0) | 2022.06.03 |
백준 1213 - 팰린드롬 만들기(C++) (0) | 2022.06.02 |
백준 4673 - 셀프 넘버 (0) | 2022.03.29 |