除数を見つける関数を使用して、2つの正の整数が与えられた任意の2つの最大公約数を見つけます

Kaneki

これは私が今まで持っているものです

def div(x):
    A=[]
    for i in range(1,x):
        if x%i==0:
            A.append(i)
    print(A)
div(45)
div(50)
n=0
for i in range(1, min(45, 50)+1): 
    if 45%i==50%i==0: 
        n+=1
print(max(n))
TypeError                                 Traceback (most recent call last)
<ipython-input-8-80ad9173d3fa> in <module>
     11     if 45%i==50%i==0:
     12         n+=1
---> 13 print(max(n))

TypeError: 'int' object is not iterable

複数のロジックを試しましたが、すべてエラーが発生します。これが最も適切なものです。私はまだ初心者なので、単純なプログラムでも問題が発生します。この問題は、ロジック構築をテストするために使用されたものです。

ロリー・ドートン

あなたの行n=0は名前nを整数として定義しています。その後、を実行しようとしprint(max(n))ます。

つまり、max()単一の整数のを計算しようとしますこれがエラーメッセージの原因です。max()のドキュメントにはmax()、単一の反復可能オブジェクト(リストなど)または複数の値(整数など)の2つの有効な使用法が記載されています。単一の整数は許可されていません。

あなたの意図がよくわからないので、プログラムに小さな変更を加えることはお勧めできません。アプローチを変えることをお勧めします。代わりに、これを行うことができます:

  1. div()2つの整数のそれぞれを呼び出して、除数の2つのリストを作成します。
  2. 各リストをPythonセットに変換します
  3. これらの2つのセットの共通部分を計算します(これを行う操作については、前のリンクを参照してください)。これで、最大公約数のセットができました。
  4. その交差セットの最大値を見つけます。セットは反復可能であるため、max()そのセットで機能します。結果として得られる最大値は、最大公約数です。

コードは簡単に記述できる必要があります。問題がある場合は、その試みを示して、さらに助けを求めてください。

ちなみに、あなたのdiv機能は正しくありません。範囲の上限は、除数としてx + 1数値を含めるxことです。整数はそれ自体を除算します。また、リストを出力するのでdiv()なく、リストを呼び出し元のルーチンに返す必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ