找到x,y范围内的所有数字,即3和5是它们唯一的质数。 例如3 ^ 4 * 5 ^ 1 = 405,因此该数字符合条件。 条件:y> x> 1。 这是我的解决方案,但是时间复杂度很低:
def soleDivisors(x, y):
cnt=0
for i in range(x,y+1):
n=i
while n%3==0 or n%5==0 or n==1:
if n==1:
cnt+=1
break
if n%3==0:
n=n/3
if n%5==0:
n=n/5
return cnt
有关改善时间复杂度的建议? 附言我试图将n%2!= 0添加到while条件中,但它并没有足够地帮助实现复杂性。我正在考虑使用足以检查sqrt(n)但仍然不知道如何实现它的想法。