Advertisement
Guest User

GCD&Children

a guest
Feb 14th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.03 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import math  
  3. vlist = []
  4. def getGCD (*numbe):  
  5.     global vlist
  6.     L1 = []  
  7.     vlist = []  
  8.     ii = 1  
  9.     numb = sorted(numbe)  
  10.     ki = 0
  11.     for i in numb:  
  12.         if i < 0:  
  13.             i = abs(i)  
  14.             numb[ki] = i
  15.         ki+= 1
  16.     L1 = getChildren(numb[0])  
  17.     L2 = []  
  18.     f = len(numb)-1  
  19.     while f > 0:  
  20.         for p in L1:  
  21.             if numb[ii] % p == 0:  
  22.                 L2.append(p)  
  23.                 numb[ii] = numb[ii] / p  
  24.         L1 = L2  
  25.         L2 = []  
  26.         ii+= 1  
  27.         f-= 1  
  28.     gcd = 1  
  29.     for i in L1:  
  30.         gcd = gcd * i  
  31.    
  32.     del(L1,L2,i,ii,p,f)
  33.     return gcd  
  34.  
  35. def getChildren(num):  
  36.     if num<0:
  37.         raise TypeError('no non-positive!')
  38.     global vlist
  39.     if not vlist == []:
  40.         vlist = []
  41.     func(num)
  42.     return vlist
  43. def func(num):
  44.     Prime = True  
  45.     for i in range(2, int(math.sqrt(1 + num)) + 1):  
  46.         if num % i == 0 and i != num :  
  47.             vlist.append(i)  
  48.             Prime = False  
  49.             func(num / i)  
  50.             break
  51.      
  52.     if Prime:  
  53.         vlist.append(num)  
  54.     return vlist
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement