列出数的所有因数
List all factors of number
我正在尝试列出一个名为 count 的数字的所有因数。每当我运行它,它returns1。例如:if 6 = count
,那么调用findFactor(6)
时应该返回的是1 2 3 6
。返回的是1
divisors = ""
def findFactor(count):
divisors = ""
valueD = 0
for i in range(1, count+1):
valueD = count/i
if isinstance(valueD,int) == True:
divisors = str(valueD)+" "
print divisors
首先,你有一个缩进错误。 print divisors
需要切换到 for 循环内部。
divisors = ""
def findFactor(count):
divisors = ""
valueD = 0
for i in range(1, count+1):
valueD = count/i
if isinstance(valueD,int) == True:
divisors = str(valueD)+" "
print divisors
此外,如@juanpa.arrivillaga 所述,您的结果将在 Python 2 和 Python 3 之间变化。
但是,如果您希望 divisors
按您想要的顺序打印,即从 1
开始,您需要将范围更改为 for i in range(count,0, -1)
。您将获得多个 1
's ,但这是我留给您解决的问题。一个小挑战,如果你愿意的话。 ;)
您可以参考这段代码:
def find_factor(n):
factor_values = []
for i in range(1, n + 1):
if n % i == 0:
factor_values.append(i)
values = ""
for v in factor_values:
values += str(v) + " "
return values
函数将return1 2 3 6
这是我想出的全部代码。感谢大家的帮助。
def findFactor(n):
factorValues = []
for i in range(1, n + 1):
if n % i == 0:
factorValues.append(i)
values = ""
for v in factorValues:
values += str(v) + " "
print values.count(" ")
# prints the number of factors
print values
findFactor(21)
它将打印因子的数量,然后在下一行打印因子。
这可以使用 list comprehension 在一行中完成。
def factorize(num):
return [n for n in range(1, num + 1) if num % n == 0]
目前给出的答案都是暴力破解
对于n=10000,他们将不得不迭代一万次。
以下只会迭代100次:
def find_factors(n):
factors = []
i = 1
j = n
while True:
if i*j == n:
factors.append(i)
if i == j:
break
factors.append(j)
i += 1
j = n // i
if i > j:
break
return factors
如果有一个可用的素数列表,它可以做得更快。
我正在尝试列出一个名为 count 的数字的所有因数。每当我运行它,它returns1。例如:if 6 = count
,那么调用findFactor(6)
时应该返回的是1 2 3 6
。返回的是1
divisors = ""
def findFactor(count):
divisors = ""
valueD = 0
for i in range(1, count+1):
valueD = count/i
if isinstance(valueD,int) == True:
divisors = str(valueD)+" "
print divisors
首先,你有一个缩进错误。 print divisors
需要切换到 for 循环内部。
divisors = ""
def findFactor(count):
divisors = ""
valueD = 0
for i in range(1, count+1):
valueD = count/i
if isinstance(valueD,int) == True:
divisors = str(valueD)+" "
print divisors
此外,如@juanpa.arrivillaga 所述,您的结果将在 Python 2 和 Python 3 之间变化。
但是,如果您希望 divisors
按您想要的顺序打印,即从 1
开始,您需要将范围更改为 for i in range(count,0, -1)
。您将获得多个 1
's ,但这是我留给您解决的问题。一个小挑战,如果你愿意的话。 ;)
您可以参考这段代码:
def find_factor(n):
factor_values = []
for i in range(1, n + 1):
if n % i == 0:
factor_values.append(i)
values = ""
for v in factor_values:
values += str(v) + " "
return values
函数将return1 2 3 6
这是我想出的全部代码。感谢大家的帮助。
def findFactor(n):
factorValues = []
for i in range(1, n + 1):
if n % i == 0:
factorValues.append(i)
values = ""
for v in factorValues:
values += str(v) + " "
print values.count(" ")
# prints the number of factors
print values
findFactor(21)
它将打印因子的数量,然后在下一行打印因子。
这可以使用 list comprehension 在一行中完成。
def factorize(num):
return [n for n in range(1, num + 1) if num % n == 0]
目前给出的答案都是暴力破解
对于n=10000,他们将不得不迭代一万次。
以下只会迭代100次:
def find_factors(n):
factors = []
i = 1
j = n
while True:
if i*j == n:
factors.append(i)
if i == j:
break
factors.append(j)
i += 1
j = n // i
if i > j:
break
return factors
如果有一个可用的素数列表,它可以做得更快。