티스토리 뷰
문제
풀이
package main
import (
"fmt"
"bufio"
"os"
"math"
)
func main() {
var t, n int
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
primeNumbers := getPrimeNumbers(10000)
fmt.Fscanln(reader,&t)
for i:=0; i<t; i++ {
fmt.Fscanln(reader, &n)
printGoldBach(n,primeNumbers, writer)
}
}
func getPrimeNumbers(num int) (primeNumbers map[int]bool) {
primeNumbers = make(map[int]bool, num)
for i:=0; i<num; i++ {
primeNumbers[i+1] = true
}
for i:=0; i<num; i++ {
if primeNumbers[i+1] == false {
continue
}
var divisionCount int
for j:=0; j<int(math.Sqrt(float64(i+1))); j++ {
if (i+1) % (j+1) == 0 {
divisionCount++
if divisionCount >1 {
for k:=1; k*(i+1)<=num; k++ {
primeNumbers[k*(i+1)] = false
}
break
}
}
}
}
return primeNumbers
}
func printGoldBach(num int, primeNumbers map[int]bool, writer *bufio.Writer) {
for i:=num/2; i>0; i-- {
if primeNumbers[i] && primeNumbers[num-i] {
fmt.Fprintf(writer, "%d %d\n", i, num-i)
break
}
}
}
728x90
'dev > algorithm' 카테고리의 다른 글
BOJ / 3009번 / 네 번째 점 [Golang] (0) | 2020.05.13 |
---|---|
BOJ / 1085번 / 직사각형에서 탈출 [Golang] (0) | 2020.05.12 |
BOJ / 4948번 / 베르트랑 공준 [Golang] (0) | 2020.05.10 |
BOJ / 1929번 / 소수 구하기 [Golang] (0) | 2020.05.09 |
BOJ / 2581번 / 소수 [Golang] (3) | 2020.05.08 |
댓글