nwd w python'ie

0

Witam, robię zadanie ze spoja w jęzku Python. Oto jego treść:

Wejście

Na wejście programu podana zostanie pewna ilość zestawów danych (co najwyżej 1000). Każdy z zestawów ma postać:

n x1 x2 … xn
gdzie n jest liczbą naturalną (z zakresu 1-1000), po której następuje n liczb całkowitych x1 x2 … xn (z zakresu od 1 do 1.000.000.000). Poszczególne liczby w zestawie zostaną rozdzielone spacją, a poszczególne zestawy znakiem nowej linii.

Wyjście

Dla każdego z wczytanych z wejścia zestawów należy wyznaczyć największy wspólny dzielnik liczb tworzących dany zestaw. Poszczególne wyniki należy oddzielić od siebie znakiem nowej linii.

Przykład

Wejście:

    3 24 12 6
    3 10 5 1
    1 3
Wyjście:

    6
    1
    3
 

Stworzyłem takie coś:

def nwd(a,b):
    while a != b:
        if a > b:
            a = a - b
        else:
            b = b - a
    return a
while 1:
        try:
            liczba = [int(x) for x in raw_input().split()]
        except EOFError: break
        if liczba:
            najwiekszy=reduce(nwd,liczba)
            print najwiekszy
        else:
            break 

Można powiedzieć,że prawie to działa ;] liczy ładnie nwd itd, ale problem w tym,że nie potrafię stworzyć tego warunku, którym jest pierwsza liczba. jak zrobić Aby pętla nie wczytywała do enter, a tylko wybrana ilosc liczb ? próbowałem np z :
ile=raw_input()
while ile:
...
ile=ile-1
ale w takim wypadku ograniczam tylko ilosc zestawow,a nie liczby w danym zestawie. Jest mi ktoś w stanie podpowiedzieć ?

0

Wciąż nie jest łatwiej ;P Podobno trzeba gdzieś wklepać pętle FOR.. tylko nie wiem jak!

0

Nie znam Pythona, ale to chyba będzie coś w stylu:

from fractions import gcd

input = [int(x) for x in raw_input().split()]
max = input[0]

for i in input:
  max = gcd(max, i)

1 użytkowników online, w tym zalogowanych: 0, gości: 1