prime-pair.go 509 B

123456789101112131415161718192021222324252627282930313233343536
  1. package main
  2. import (
  3. "fmt"
  4. "math"
  5. )
  6. func main() {
  7. var n int
  8. fmt.Scan(&n)
  9. sieve := make([]bool, n+1)
  10. prime := make([]int, 0)
  11. sqrt := int(math.Sqrt(float64(n)))
  12. for i := 2; i <= sqrt; i++ {
  13. if sieve[i] {
  14. continue
  15. }
  16. for j := 2 * i; j <= n; j += i {
  17. sieve[j] = true
  18. }
  19. }
  20. for i := 2; i <= n; i++ {
  21. if !sieve[i] {
  22. prime = append(prime, i)
  23. }
  24. }
  25. cnt := 0
  26. m := make(map[int]bool)
  27. for _, p := range prime {
  28. if m[n-p] || 2*p == n {
  29. cnt++
  30. }
  31. m[p] = true
  32. }
  33. fmt.Println(cnt)
  34. }