ν‹°μŠ€ν† λ¦¬ λ·°

πŸ‘©πŸ»‍πŸ’» 문제

 

2960번: μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체

2, 4, 6, 8, 10, 3, 9, 5, 7 μˆœμ„œλŒ€λ‘œ μ§€μ›Œμ§„λ‹€. 7번째 μ§€μ›Œμ§„ μˆ˜λŠ” 9이닀.

www.acmicpc.net


✍🏻 ν’€μ΄

🎨 Go

// https://www.acmicpc.net/problem/2960
package main

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

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var n, k int
	fmt.Fscanln(reader, &n, &k)
	fmt.Fprintln(writer, eratos(n, k))
}

func eratos(n, k int) (kth int) {
	primeNumbers := initPrimeNumbers(n)
	for i := 2; i < n+1; i++ {
		if primeNumbers[i] {
			for j := i; j < n+1; j += i {
				if primeNumbers[j] {
					primeNumbers[j] = false
					k--
					if k == 0 {
						kth = j
						return
					}
				}
			}
		}
	}
	return
}

func initPrimeNumbers(n int) []bool {
	var primeNumbers = make([]bool, n+1)
	for i := range primeNumbers {
		primeNumbers[i] = true
	}
	return primeNumbers
}

🎨 Python3

# https://www.acmicpc.net/problem/2960
import sys

def eratos(n, k):
    prime_numbers = [True for _ in range(n+1)]
    kth = 0
    for i in range(2, n+1):
        if prime_numbers[i]:
            for j in range(i, n+1, i):
                if prime_numbers[j]:
                    prime_numbers[j] = False
                    k -= 1
                    if k == 0:
                        kth = j
                        return kth
    return kth

if __name__ == "__main__":
    n, k = list(map(int, sys.stdin.readline().split()))
    print(eratos(n, k))
728x90
λŒ“κΈ€