0
list = []

for i in range(2,100):
    primeflag=True
    for num in list:
        if(i%num==0):
            primeflag=False

    if(primeflag):
        print str(i)
        list.append(i)
print list

7で終わる素数を削除するには何を入れる必要がありますか?

4

3 に答える 3

1

数値を 10 で変更し、最終的なリストに追加する前に 7 に等しいかどうかを確認します。

if(i % 10 != 7):
    print str(i)
    list.append(i)
于 2013-02-08T17:07:07.817 に答える
1

やりたいことを達成する方法はたくさんありますが、特定の問題に適合するものを見つける必要があります。

これにアプローチする1つの方法:

  • メソッド isprime(n) を定義します - どこかで実装を把握または検索できます。

それで:

yourlist = [x for x in xrange(2, 100) if isprime(x) and x % 10 != 7]

これは最初のアプローチとしては適切です。もちろん、ジェネレーターや変更された Erasthothenes Sieve などを使用するなど、より複雑な可能性もありますが、いずれかが機能するようになった後で、これらのオプションを検討できます。

于 2013-02-08T17:08:25.253 に答える
0

Python では、関数を使用して任意の数値を文字列表現に変換できますstr

だから、あなたがすることができます: -

num  = 17
str_num = str(num)

次に、最後の桁が 7 に等しくないかどうかをテストするために、文字列の最後の文字にアクセスし、それを と比較できます'7'。最後の文字にアクセスするには、 を使用しますstr_num[-1]

したがって、必要な条件は次のとおりです。

if str_num[-1] != '7':
    # don't add it to list

また、内側のループが正しくないようです。のモジュラスを のiすべての数値で除算してlistチェックしています。むしろ、 までのモジュラスをチェックする必要がありますi ** 0.5。また、ループのelse一部を利用して、 . したがって、変更されたコードは次のようになりますforboolean flag

for i in range(2,100):
    for num in range(2, int(i ** 0.5) + 1):
        if(i % num == 0):
            break

    else:
        if str(i)[-1] != '7':
            my_list.append(i)

And elseofforは、forループがブレークせずに実行を完了すると実行されます。


実際の質問とは直接関係ありませんが、エラトステネスのふるいアルゴリズムをチェックして、特定の範囲で素数を生成することを検討できます。

于 2013-02-08T17:06:44.060 に答える