2017-07-26 13 views
0
  • 複数の番号入力
  • 以下

は私はロジックで考えた方法計算GCD - リスト内のすべての要素をチェックする方法

def main(): 

numbers = input() 
if numbers == "0": 
    exit() 
else: 
    number_list = [int(i) for i in numbers.split()] 

def calculate_gcd(number_list): 
    for i in range(1,smallest_number(number_list)+1): 
     for n in range(0,len(number_list)): 
      if number_list[n] % i == 0: 
       check_list += number_list[n] 

more code - but not important for the question im asking 
my code was hardly complete and only worked for max 3 size lists, sadly. 

私のコードの書き込みを開始することを選んだだけの方法です

  1. 入力を読み、スペースで区切ってリストに入れる
  2. リスト
  3. は、次に、すべての要素%除数== 0の場合は[0](リストに最小である) 5.変数(除数)を行い、除数< = SortedListのながら1
  4. に設定ORT GCD =除数は、除数+ = 1
  5. ループそれは私が

    1. それは愚かな労力を必要とした

    問題は、もはやそれ意志真になるまで実際には実行されず、ランタイムエラーが発生します。

  6. チェックする方法がわかりませんNo.5(太字) gcdの機能はありますが、2つの入力しか扱っていません。 それは同じ質問になる、どうすれば 'すべての'要素がゼロに分割されることを確認できますか?

gcdロジックを作成し、No.5(太字)にコメントすることをお勧めしますか?

はなぜ小さな問題に取り組むない、代わりに、より大きな問題に取り組むあなたに

答えて

2

ありがとうございます。あなたはどのように2つの数字のgcdを見つけるのですか?まあ、これには複数のアルゴリズムがあります。私たちは、反復1を使用してみましょう:

gcd(gcd(...(a, b), c), ...) 

def gcd_iterative(a, b): 
    while b: 
     a, b = b, a % b 
    return a 

、実現する一つのことは、あなたが複数の番号を持っている、とあなたはすべての数値の最大公約数を検索したい場合は、それは単純である、ということですあなたは番号のリストを持っている場合、lst今すぐ

gcd = gcd_iterative(a, b) 
gcd = gcd_iterative(gcd, c) 

:あなたは3つの数字(A、B、C)の最大公約数を検索したい場合は単純に言えば

は、その後、あなたは次の操作を行います、あなたは次のことをすることができますing:

>>> gcd = lst[0] 
>>> for num in lst[1:]: 
     gcd = gcd_iterative(gcd, num) 
>>> print(gcd) 
関連する問題