コーディングテストの小数点検索の問題を解く


プログラマの小数点(level 1)の解答を探します
import math

def solution(n):
    data = [True for _ in range(n+1)]
    cnt = 0
    for i in range(2, n+1):
        if data[i] == True:
            cnt += 1
            j=2
            while j*i <= n:
                data[j*i] = False
                j+=1
    return cnt
いくつかを求めるためにわざと平方根ではなくn+1で文を繰り返す
人の解答を見て、面白いものが書いてあります.
def solution(n):
    num=set(range(2,n+1))

    for i in range(2,int(n**0.5)+1):
    #제곱근까지만 반복해도 다 지워짐
        if i in num:
            num-=set(range(2*i,n+1,i))
    return len(num)
セットして、それぞれ消去