如果一个自然数有超过 17 个不同的除数(包括一个和数字本身),我们称它为合适的自然数。确定属于区间[10 001;50,000],以及这些数字中最小的一个。在你的答案中写下两个整数:首先是数字,然后是最小的数字。
sp = []
k=0
m=50001
for i in range(10001,50001):
for j in range(1,i//2+1):
if i%j==0:
sp.append(j)
if len(sp)>16:
k+=1
if i<m:
m=i
sp.clear()
print(k,m)
显示答案很长一段时间,所以不要等待
该代码将数字的所有除数添加到列表中,然后如果列表的长度> 16(虽然条件说17,但为了以某种方式加速除数,我将数字限制为一半,因为那么只有除数是数字本身,它在列表中只是它不会,这意味着它在条件中减一)
我尽可能快地完成了它,但它仍然不起作用。
我们来到这段代码:
我使用
set
,list
不仅不检查除数是否是数字的根。它set
只会被添加到号码中一次,他会照顾它。