[プログラマ](python)小数点を検索


質問する

🧩 首都コード


1~nに移動したsqrt 2は小数で、小数のリストを作成して長さを返します.

🏁 説明する


def solution(n):
    nlist = [True] * (n+1)
    m = int(n**0.5)
    for i in range(2,m+1):
        if nlist[i] == True:
            for j in range(i+i,n+1,i):
                nlist[j] == False
    return len([i for i in range(2,n+1) if nlist[i] == True])

📌 注意-エラストテレスの体


🧩 別の解釈

def solution(n):
    num=set(range(2,n+1))

    for i in range(2,n+1):
        if i in num:
            num-=set(range(2*i,n+1,i))
    return len(num)
  • range(2,n+1)重複しないリストnum
  • を作成する.
  • range(2,n+1)では、iがnumにある場合:
    numからset(range(2*i,n+1,i)
  • を削除する
    は、
  • numの長さ(数)
  • を返します.
    エラトネスのふるいを使った場合、同じアルゴリズム!
    時間の複雑さこのコードはもっと高いかもしれません.