尤拉計劃712:指數差

lt發表於2020-04-19

enter image description here
這個p至少要是D的一個引數的質因數才有意義。 比如14,24只要算2、3、7。
D(14,24)
=|v2(14)-v2(24)| +|v3(14)-v3(24)| +|v7(14)-v7(24)|
=|1-3|+|0-1|+|1-0|
=4

測試程式碼

def v(p,n):
 n1=n
 t=0
 while n1%p==0: n1/=p;t+=1
 return t 

primes=[2,3,5,7,11,13,17]
def prime(n):
 primes=[]
 h  = [True] * int(n+1)
 h[:2] = [False, False]
 for i in range(2, int(n ** (1.0*0.5)) + 1):
    if h[i]:
        h[i*i::i] = [False] * len(h[i*i::i])
 for i, e in enumerate(h):
    if e:
        primes.append(i)
 return primes

primes=prime(1000)

def D(n,m):
 s=0
 for p in primes:
  if p>max(n,m):break
  s+=abs(v(p,n)-v(p,m))
 return s 

def S(N):
 s=0
 for n in range(1,N+1):
  for m in range(n+1,N+1):
   s+=D(n,m)
 return s*2

相關文章