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で終わる素数を削除するには何を入れる必要がありますか?
数値を 10 で変更し、最終的なリストに追加する前に 7 に等しいかどうかを確認します。
if(i % 10 != 7):
print str(i)
list.append(i)
やりたいことを達成する方法はたくさんありますが、特定の問題に適合するものを見つける必要があります。
これにアプローチする1つの方法:
それで:
yourlist = [x for x in xrange(2, 100) if isprime(x) and x % 10 != 7]
これは最初のアプローチとしては適切です。もちろん、ジェネレーターや変更された Erasthothenes Sieve などを使用するなど、より複雑な可能性もありますが、いずれかが機能するようになった後で、これらのオプションを検討できます。
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
一部を利用して、 . したがって、変更されたコードは次のようになりますfor
boolean 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 else
offor
は、for
ループがブレークせずに実行を完了すると実行されます。
実際の質問とは直接関係ありませんが、エラトステネスのふるいアルゴリズムをチェックして、特定の範囲で素数を生成することを検討できます。