質問

してい list の数(integers)(例えば、1~10)となります。

彼らは必ずしも連続などが昇順です。

また、ユーザーに複数回の入力の選択可能。その番号を入力し、一覧からの削除と共にその 要因 る場合があります。

私はこのユーザーからの選択に盛ります。しかし、ある時点場合があり素数がない要因が残っている。

私は比較的新しいPythonので、うまく実施:

  • チェックが選択されていない要因は残るものでない場合は総理).

  • チェックが盛りの数字は、数字なし い。

おうと思っていを for 諸表がなんなのかを正確にどのように実施している。誰でもできるのでアドバイス、またはコードについて教えてください。よろしくお願...

役に立ちましたか?

解決

guess <使用できる残数any()のいずれかの要因があるかどうかを確認するには/>

hasfactors = any(guess % n == 0 for n in numbers)

残りのすべての数字が素数かどうかを確認するために、 all() にすることができ中古。

:(あなたはすでに素数を入力するからユーザーを防ぐと言うので、私はあなたがisprime()機能のいくつかの種類を持っていると仮定します)
onlyprimes = all(isprime(n) for n in numbers)

他のヒント

最初の問題については、各要素が選択された番号ではなく、選択番号(コードを参照)の要因ではない新しいリストを作成し、リストの内包表記を使用することができます。あなたの元のリストとこれを比較します。

$ python
>>> selected_number = 6
>>> [x for x in range(1,11) if selected_number % x]
[4, 5, 7, 8, 9, 10]
それぞれの要素が素数である場合は、

は、第二の問題については、確認してください。ない場合は、因子を含まない数字を確認してください。各要素のために、あなたは、元のリストの上にmod、それがゼロのリストがありますかどうかを確認することがあります。でも、私は、より高速な方法があります確信してます。

Lが非ゼロ数のリストである場合、

、数Nの要因であるもののリストである:

factors = [x for x in L if N % x == 0]
Nはもちろん、Lには要因を持っていない場合は、

リストは単に空になります。

から(Pythonで素数を確認するには、いくつかのSOの質問と回答があった、私はgmpy.is_primeを使用したい - (?)

私は、あなたが「素数」を意味しない限り、あなたは「要因なしの数字」によって何を意味するかわからないんだけど gmpy の)私の拡張子が、その後、もちろん私はバイアスされてる; - ) あなたが意味する場合は、それらすべてのリストを作るのは難しいの一種ですので、

、「Lに何の要因を持っていないすべての数値は、」よく、それらの多くは、無限にあります。彼らのために無制限発電ます:

import itertools

def nofactorsinlist(L):
  for i in itertools.count():
    if any(x for x in L if i % x == 0):
      continue
    yield i

いくつかの最適化が可能になるが、この1つは本当に簡単で、私はそれはあなたが後にしているということです正確に何を理解せずに、複雑な最適化を追加することが嫌がってる - !)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top