簡體   English   中英

獲取給定整數的整個因子對列表的最簡單方法是什么?

[英]What is the easiest way to get a list of whole factor pairs of a given integer?

獲取給定整數的整個因子對列表的最簡單方法是什么?

例如: f(20)將返回[(1,20), (2,10), (4,5)]

def f(value):
    factors = []
    for i in range(1, int(value**0.5)+1):
        if value % i == 0:
            factors.append((i, value / i))
    return factors

或者使用列表理解相同的事情:

def f(val):
    return [(i, val / i) for i in range(1, int(val**0.5)+1) if val % i == 0]

或這個:

def f(n):
        factors_list = []
        for i in xrange(1, int(n**0.5) + 1):
            if n % i == 0:
                factors_list.append((i, n/i))
        return factors_list

print f(20)

編輯:或使用列表理解的單行:

def f(n):
    return [(i, n / i) for i in xrange(1, int(n**0.5) + 1) if n % i == 0]

print f(36)

EDIT2:如果你想讓函數用於負整數(以及0和正整數),請使用:

def f(n):
    return [(i, n / i) for i in xrange(1, int(math.sqrt(math.fabs(n))) + 1) if n % i == 0]

print f(-36)

這個怎么樣:

def f(n):
    from itertools import takewhile
    if not isinstance(n,int):
          raise ValueError("supplied %s type, requires integer input" %(type(n).__name__))
    return [(i,n/i) for i in takewhile(lambda x:x*x<n,xrange(1,n)) if (n%i)==0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM