查找数字除数的总数,用于python中的t测试用例
Posted
技术标签:
【中文标题】查找数字除数的总数,用于python中的t测试用例【英文标题】:find total number of divisors of number, for t test cases in python 【发布时间】:2015-11-05 14:35:51 【问题描述】:我做了一个程序来找到一个带有测试用例的数字的除数以将其提交给在线法官,所以我写了这样的代码
num_case=int(raw_input())
num=list()
final_o=[]
for x in xrange(num_case):
num.append(int(raw_input()))
for h in num:
result=[int(h)]
for i in xrange(1, h + 1):
if h % i == 0:
result.append(i)
a=final_o.append(len(result)-1)
for ff in final_o:
print ff
在这种情况下,我让用户输入测试用例的数量,例如 3,然后输入数字,例如 12 7 和 36,然后他得到类似 6 2 9 的输出,即 12 有 6 个除数,依此类推代码运行良好,但提交时出现内存错误,因此我尝试使用 itertools,因为 for 循环中的范围很小,xrange 花费的时间超过 2 秒,但我没有得到任何输出代码
from itertools import count
num_case=int(raw_input())
num=list()
final_o=[]
for x in xrange(num_case):
num.append(int(raw_input()))
for h in num:
result=[int(h)]
n=int(raw_input())
for i in count(1):
if n % i == 0:
result.append(i)
elif count==n+1:
break
a=final_o.append(len(result)-1)
for ff in final_o:
print ff
任何人都有解决此错误的方法吗?请注意,测试用例的时间为 2 秒,数字范围为 10^9,测试用例为 100 我该怎么做?
【问题讨论】:
我不明白你的算法:你把从 1 到 ... 的所有数字放在一个列表中,然后你遍历该列表并验证该列表中的元素是否符合条件。为什么不简单地遍历从 1 到 ... 的所有数字,并验证它们是否符合上述条件,而不将所有这些数字放在一个列表中? (实际上,列表变得如此庞大以至于它不再适合内存) 我想获取用户给我一个数字的除数,我看到可以被这个数字整除的数字,从 1 到用户给我的数字我想要做它通过一个测试用例,结束后我得到结果 【参考方案1】:def devisors_number(n):
result = 0
sqrt_n = int(n**0.5)
for i in xrange(1, sqrt_n + 1):
if n % i == 0:
result += 1
result *= 2
if sqrt_n**2 == n:
result -= 1
return result
n = int(raw_input("Enter a number: "))
d = devisors_number(n)
print "0 has 1 devisors".format(n, d)
【讨论】:
好,但我想给它放一个测试用例,并在案例结束后得到所有数字的结果 只需将i
添加到另一个范围。 (如果sqrt_n**2==n
,那么也添加这个:-))
许多 thaaaaaanks 给你我编辑它并添加它工作的测试用例并接受你帮助我解决内存错误再次谢谢你以上是关于查找数字除数的总数,用于python中的t测试用例的主要内容,如果未能解决你的问题,请参考以下文章