-
백준 4948_베르트랑 공준알고리즘/백준 2020. 11. 8. 15:32
https://www.acmicpc.net/problem/4948
- 에라토스테네스의 체 알고리즘
- N+1크기의 배열을 선언한다.
- 배열을 모든 요소를 0으로 초기화한다.
- 배열의 인덱스가 2의 배수인 모든 칸을 1로 초기화한다.
- 그 다음수인 3을 선택한다.
- 배열의 인덱스가 3의 배수인 모든 칸을 1로 초기화한다.
- 그 다음 소수인 5를 선택한다.
- 배열의 인덱스가 5의 배수인 모든 칸을 1로 초기화한다.
- 위 내용을 N까지 반복한다.
void func(int n) { int arr[n+1]={0,}; int i,j; for(i=2; i<=n; i++){ if(arr[i]==1){ continue; } for(j=2*i; j<=n; j+=i){ arr[j]=1; } } }
- 베르트랑 공준 문제 풀이
#include <stdio.h> int arr[246913]; //전역변수는 초기화 하지 않으면 0으로 자동초기화됨 void func(int n) //소수 구하기 { int i,j; for(i=2; i<=2*n; i++){ if(arr[i]==1){ continue; } for(j=2*i; j<=2*n; j+=i){ arr[j]=1; } } } int main() { int n; int i,sum=0; func(123456); //문제에서 범위가 (N <= 123456) while(1){ scanf("%d", &n); if(n==0) return 0; sum = n; for(i=n+1; i<=2*n; i++) sum-=arr[i]; printf("%d\n", sum); } }
'알고리즘 > 백준' 카테고리의 다른 글
[BFS] Priority Queue 활용 BFS (1) 2024.02.08 [백준] 23289 온풍기 안녕! (1) 2024.01.14 백준 2775_부녀회장이 될테야 (0) 2020.11.01 백준 1541_잃어버린 괄호 (0) 2020.11.01 백준 11650_좌표 정렬하기 (0) 2020.11.01