[プログラマー]少数のLvを探す1 - Python


[プログラマー]少数のLvを探す1
私の答え
def solution(n):
    a = [0] * (n + 1)
    for i in range(2, len(a)):
        for j in range(2, len(a)):
            idx = i * j
            if idx > n:
                break
            a[idx] = 1
    return a[2:].count(0)
  • 二重for文を初めて使用すると、答えは正しいが、時間効率の面では失敗する.
  • テストステロンのふるいを使用します.
  • では、テストステロンの体は少数の倍数であり、少数の規則ではない.
  • の優先値が0の配列を入力値+1のサイズに変更します.
  • 配列のインデックスは0から計算されるので、インデックス10を使用するには、インデックスをより大きな11サイズに作成する必要があります.
  • その後、再複文が回転する.
  • 2からn+1にかけて、各数の1の倍数を除いて、倍数のインデックスの値を1に変更します.
  • 倍数が入力値を超えると、繰返しは停止します.
  • は、各数の倍数のインデックスが1であり、少数のインデックスの値が0である.
  • 配列のインデックス2から、戻り値が0の個数でよい.
  • に感銘を与える
    以前はジャワで解いていたが、その間にラ菌のふるいを忘れていた.