Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

Tôi muốn tính toán GCD cho một danh sách các số. Nhưng tôi không biết có gì sai với mã của mình.

A = [12, 24, 27, 30, 36]


def Greatest_Common_Divisor(A):
    for c in A:
        while int(c) > 0:
            if int(c) > 12:
                c = int(c) % 12
            else:
                return 12 % int(c)
    print Greatest_Common_Divisor(A)

Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

Sophros

Huy hiệu vàng 13K944 Huy hiệu bạc66 Huy hiệu đồng9 gold badges44 silver badges66 bronze badges

Đã hỏi ngày 22 tháng 3 năm 2015 lúc 12:51Mar 22, 2015 at 12:51

3

Đây là đoạn mã mà tôi đã sử dụng:

from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x

Đã trả lời ngày 13 tháng 6 năm 2018 lúc 7:02Jun 13, 2018 at 7:02

Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

2

Kể từ Python 3.9, Python đã được hỗ trợ tích hợp để tính toán GCD qua danh sách các số.

import math
A = [12, 24, 27, 30, 36]
print(math.gcd(*A))

Output:

3

Đã trả lời ngày 5 tháng 8 năm 2020 lúc 2:21Aug 5, 2020 at 2:21

Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

BIGBOUNTYBIGBOUNTYbigbounty

15.6K4 Huy hiệu vàng33 Huy hiệu bạc60 Huy hiệu Đồng4 gold badges33 silver badges60 bronze badges

def gcd (a,b):
    if (b == 0):
        return a
    else:
         return gcd (b, a % b)
A = [12, 24, 27, 30, 36]
res = A[0]
for c in A[1::]:
    res = gcd(res , c)
print res

Liên kết IdeOne

Đã trả lời ngày 24 tháng 7 năm 2015 lúc 19:42Jul 24, 2015 at 19:42

0

Tôi đã sử dụng đoạn mã này:

def gcd(my_list):
    result = my_list[0]
    for x in my_list[1:]:
        if result < x:
            temp = result
            result = x
            x = temp
        while x != 0:
            temp = x
            x = result % x
            result = temp
    return result 

Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

Jianxin Gao

2.5372 Huy hiệu vàng16 Huy hiệu bạc31 Huy hiệu Đồng2 gold badges16 silver badges31 bronze badges

Đã trả lời ngày 3 tháng 2 năm 2019 lúc 6:50Feb 3, 2019 at 6:50

Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

Kouroshkouroshkourosh

711 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

Nếu bạn muốn sử dụng một phương thức hiện có, hãy thử `np.gcd.reduce ':

import numpy as np

A = [12, 24, 27, 30, 36]

print(np.gcd.reduce(A))

mà trả về

from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x
3

Đã trả lời ngày 23 tháng 4 năm 2020 lúc 7:07Apr 23, 2020 at 7:07

Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

uhohuhohuhoh

3,4825 Huy hiệu vàng37 Huy hiệu bạc93 Huy hiệu Đồng5 gold badges37 silver badges93 bronze badges

5

Tôi không rõ tại sao bạn đang sử dụng 12 trong chức năng của mình? Bạn có muốn kiểm tra thuật toán của mình với 12 cụ thể không?

Có chức năng được xây dựng cung cấp một giải pháp tốt (

from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x
4) như được tham chiếu trong câu trả lời này

Nếu bạn muốn phát triển cách tiếp cận của riêng mình, bạn có thể làm theo cách này: Sắp xếp danh sách và nhận số lượng danh sách tối thiểu (gọi nó là

from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x
5). Vòng lặp từ 2 đến
from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x
5, bạn có thể nhận được ước số chung tuyệt vời trong danh sách của mình.

Đã trả lời ngày 22 tháng 3 năm 2015 lúc 13:27Mar 22, 2015 at 13:27

import functools as f
A = [12, 24, 27, 30, 36]
g = lambda a,b:a if b==0 else g(b,a%b)   #Gcd for two numbers
print(f.reduce(lambda x,y:g(x,y),A))     #Calling gcd function throughout the list.

"Lambda" là một hàm ẩn danh trong đó 'G' được gán với GCD của hai số bất cứ khi nào được gọi.

"Giảm" là một hàm trong mô -đun "functools" được sử dụng để thực hiện một hàm cụ thể cho tất cả các yếu tố trong danh sách. Ở đây giảm () tính toán GCD của danh sách đầy đủ A bằng cách tính toán GCD của hai yếu tố đầu tiên, sau đó là GCD của phần tử thứ 3 với GCD được tính toán trước đó của hai phần tử đầu tiên, v.v.

Hy vọng điều này làm rõ nghi ngờ của bạn.

Đã trả lời ngày 18 tháng 10 năm 2018 lúc 11:16Oct 18, 2018 at 11:16

2

from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x
7 thoát khỏi chức năng. Bên trong một vòng lặp này thường không có ý định.

Đã trả lời ngày 22 tháng 3 năm 2015 lúc 13:02Mar 22, 2015 at 13:02

DanieldanielDaniel

41.4K4 Huy hiệu vàng55 Huy hiệu bạc80 Huy hiệu đồng4 gold badges55 silver badges80 bronze badges

Như tôi thấy mã của bạn sẽ đơn giản đi trong vòng lặp vô hạn. Vì bạn gọi Phương thức Greatest_Common_Divisor đệ quy nhưng không có trường hợp cơ sở. Căn chỉnh in Greatest_Common_Divisor (A) và "Def" trong cùng một cột và vấn đề đó sẽ được giải quyết. Tuy nhiên, những gì mã của bạn làm cho mỗi số AI, phải mất phần còn lại của AI % 12, và sau đó chỉ cần in 12 % (AI % 12) và không có bất kỳ kết nối nào giữa nó và GreatestCommondivisor. Dưới đây là mã đơn giản cho GCD (A, B) mà bạn có thể sử dụng cho toàn bộ mảng:

def gcd (a,b):
    if (b == 0):
        return a
    else:
         return gcd (b, a % b)

Đã trả lời ngày 22 tháng 3 năm 2015 lúc 21:41Mar 22, 2015 at 21:41

Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

MamukamamukaMamuka

1021 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

from functools import reduce
def gcd(a,b):
    if a==0:
        return b 
    else:
        return gcd(b%a,a)
A = [12, 24, 27, 30, 36]
gcdp = reduce(lambda x,y:gcd(x,y),A)
print(gcdp)

Tôi đoán điều này sẽ làm rõ nghi ngờ của bạn.

Đã trả lời ngày 7 tháng 5 năm 2018 lúc 7:37May 7, 2018 at 7:37

Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

Ẩn danhAnonymous

3352 Huy hiệu bạc17 Huy hiệu đồng2 silver badges17 bronze badges

GCD của đầu vào danh sách của người dùng có thể được sử dụng cho bất kỳ số lượng giá trị đầu vào nào.

from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x
0

Đã trả lời ngày 24 tháng 7 năm 2019 lúc 17:24Jul 24, 2019 at 17:24

Hướng dẫn how do you find the gcd of all elements in a list python? - làm cách nào để bạn tìm thấy gcd của tất cả các phần tử trong danh sách python?

from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x
1

Đã trả lời ngày 23 tháng 9 năm 2019 lúc 17:05Sep 23, 2019 at 17:05

Chỉ cần kiểm tra GCD cho phần tử tối thiểu và tối đa trong danh sách:

from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x
2

Đã trả lời ngày 7 tháng 4 lúc 11:27Apr 7 at 11:27

3