J'essaie de générer une liste de nombres premiers en utilisant la méthode this. J'ai besoin de faire une boucle à travers chaque numéro 2 ... n et de le vérifier pour des multiples de 2 ... n. Pour une raison quelconque, la mauvaise liste semble être modifiée.Python modifiant une mauvaise liste?
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
je reçois l'erreur suivante:
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'
Cette confusion est si commune ... tout le matériel sur la langue (et sur toutes les langues avec une sémantique similaire, btw) devrait contenir une énorme boîte rouge avec un résumé de cela. – delnan
delnan: Aussi, un décrivant comment fonctionne l'arithmétique en virgule flottante. :-) – Ken
Et dans Java String == String n'est pas ce que vous voulez faire. – Falmarri