thisメソッドを使用して素数のリストを生成しようとしています。私はすべての番号2 ... nをループし、2 ... nの倍数をチェックする必要があります。何らかの理由で間違ったリストが変更されているようです。間違ったリストを修正するPython?
import sys
import argparse
import math
parser = argparse.ArgumentParser(description='find the largest prime factor of a number')
parser.add_argument('n', type=int, help='number')
args = parser.parse_args()
sieve = []
for i in range(2,args.n+1): sieve.append(i) # tried int(i)
copy1 = sieve # tried making extra copies. . .
copy2 = sieve
copy3 = sieve
#print int(math.sqrt(args.n))
for index, i in enumerate(copy1):
#print index, i
for ii in copy2:
#print ii
if i % ii == 0:
sieve[index]= None
print sieve
私は次のエラーを取得する:
Traceback (most recent call last):
File "3.py", line 22, in <module>
if i % ii == 0: TypeError: unsupported operand type(s) for %:
'int' and 'str'
この混乱は非常に一般的です...言語上のすべての素材(同様の意味論を持つすべての言語で、btw)は、次のようにして実装できます。これを要約した巨大な赤いボックスが入っているはずです。 – delnan
delnan:また、浮動小数点演算の仕組みを説明するものもあります。 :-) – Ken
java String == Stringはあなたがしたいことではありません。 – Falmarri