본문 바로가기

Study/algorithms

[백준] 4948. 베르트랑 공준

반응형

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

소수문제 에라토스테네스의 체 써서 풂

package main

import (
	"bufio"
	"fmt"
	"os"
)

var erache [300005]int

func findPrime() {
	for i := 2; i < 300005; i++ {
		if erache[i] == 0 {
			erache[i] = 1
			for j := 2; i*j < 300005; j++ {
				erache[i*j] = -1
			}
		}
	}
}

func findNum(num int) int {
	d := 2 * num
	var result int
	for i := num + 1; i <= d; i++ {
		if erache[i] == 1 {
			result++
		}
	}
	return result
}

func main() {
	findPrime()
	in := bufio.NewReader(os.Stdin)

	var num = -1

	for {
		fmt.Fscanf(in, "%d\n", &num)
		if num == 0 {
			return
		}
		fmt.Printf("%d\n", findNum(num))
	}

}

'Study > algorithms' 카테고리의 다른 글

[백준] 4153 직각삼각형  (0) 2020.01.19
[백준] 3009 네 번째 점  (0) 2020.01.19
[백준] 9020. 골드바흐의 추측  (0) 2020.01.19
[백준] 2581. 소수  (0) 2020.01.19
[백준] 2775. 부녀회장이 될테야  (0) 2020.01.19