数字が素数であるかどうかを正しく検出するプログラムを作成しましたが、そうでない場合は数値の要素のリストも返しますその部分は成功しません。 ...私は25の「NUM」の値でこの機能を使用する場合、私はこの出力を得るPython:間違った出力とValueError:素因数作成者
def prime_num():
num = int(input("Give me a number...: "))
prime = True
if num == 1:
prime = False
elif num == 2:
prime = True
for x in range(2, num):
if num % x == 0:
prime = False
break
if prime == False:
print("That's not a prime number!")
factors(num)
elif prime == True:
print("That's a prime number!")
def factors(num):
factors = []
for x in range(1, num+1):
if num % x == 0:
factors.append(x)
print("The factors for " + str(num) + " are: ", factors)
for x in factors:
for y in range(1, x):
if x % y == 0:
factors.remove(x)
print("The prime factors for " + str(num) + " are: ", factors)
正しく出力されません
prime_num()
Give me a number...: 25
That's not a prime number!
The factors for 25 are: [1, 5, 25]
The prime factors for 25 are: [1, 25]
:ここ
は私のコードです私はそれを返すようにしたい:[5] (私はこの時点での要因の多重度を心配していない)
しかし、私は私の "num"として50を試してみる。私はとValueErrorと、この出力を得る:
prime_num()
Give me a number...: 50
That's not a prime number!
The factors for 50 are: [1, 2, 5, 10, 25, 50]
Traceback (most recent call last):
File "<ipython-input-19-12c785465e2a>", line 1, in <module>
prime_num()
File "C:/Users/x/Desktop/Python/Python Practice/primes.py", line 25, in prime_num
factors(num)
File "C:/Users/x/Desktop/Python/Python Practice/primes.py", line 40, in factors
factors.remove(x)
ValueError: list.remove(x): x not in list
私はこれが私のxが要因ではありませんが、私は、具体的な要因を反復処理しています考えるかどうかはわかりません何とか意味を実現します。
リストから値を削除すると、同じリストを反復しながらいくつかの要素がスキップされます。代わりにコピーを反復する: 'for x in factors [:]'。 –