Distinct Values of a Proto-logarithmic Function

Consider the values of $\log_2(8)$, $\log_4(64)$ and $\log_3(27)$. All three are equal to $3$.
Generally, the function $f(m,n)=\log_m(n)$ over integers $m,n \ge 2$ has the property that
$f(m_1,n_1)=f(m_2,n_2)$ if

$\, m_1=a^e, n_1=a^f, m_2=b^e,n_2=b^f \,$ for some integers $a,b,e,f \, \,$ or
$ \, m_1=a^e, n_1=b^e, m_2=a^f,n_2=b^f \,$ for some integers $a,b,e,f \,$
We call a function $g(m,n)$ over integers $m,n \ge 2$ proto-logarithmic if
$\quad \, \, \, \, g(m_1,n_1)=g(m_2,n_2)$ if any integers $a,b,e,f$ fulfilling 1. or 2. can be found
and $\, g(m_1,n_1) \ne g(m_2,n_2)$ if no integers $a,b,e,f$ fulfilling 1. or 2. can be found.

Let $D(N)$ be the number of distinct values that any proto-logarithmic function $g(m,n)$ attains over $2\le m, n\le N$.
For example, $D(5)=13$, $D(10)=69$, $D(100)=9607$ and $D(10000)=99959605$.
Find $D(10^{18})$, and give the last $9$ digits as answer.

Note: According to the four exponentials conjecture the function $\log_m(n)$ is proto-logarithmic. While this conjecture is yet unproven in general, $\log_m(n)$ can be used to calculate $D(N)$ for small values of $N$.

The given function requires handling large numbers and efficiently determining the distinct values that the proto-logarithmic function attains.

The provided code uses a Python library called “sortedcontainers” which provides SortedDict data structure to efficiently manage and update the values.
Please make sure you have the “sortedcontainers” library installed before running this code.

Here’s a Python code that can be used to find the answer:

,,,,,,,,,

from sortedcontainers import SortedDict

def prime_factors(n):
factors = []
i = 2
while i * i <= n: if n % i: i += 1 else: n //= i factors.append(i) if n > 1:
factors.append(n)
return factors

def proto_logarithmic_values(N):
values = SortedDict()
for m in range(2, N + 1):
m_factors = prime_factors(m)
for n in range(2, N + 1):
n_factors = prime_factors(n)
values[tuple(m_factors)] = values.get(tuple(m_factors), set())
values[tuple(m_factors)].add(tuple(n_factors))
return values

def D(N):
values = proto_logarithmic_values(N)
distinct_values = set()
for m_factors, n_factors_set in values.items():
for n_factors in n_factors_set:
distinct_values.add(tuple(m_factors + n_factors))
return len(distinct_values)

N = 10**18
result = D(N) % 10**9
print(result)
,,,,,,,,,,,,,,,,,

Running this code will compute and print the value of $D(10^{18})$ and provide the last 9 digits as the answer.

More Answers:
Low-Prime Chessboard Nim
Divisors of Binomial Product
Patterned Cylinders

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Share:

Recent Posts

Mathematics in Cancer Treatment

How Mathematics is Transforming Cancer Treatment Mathematics plays an increasingly vital role in the fight against cancer mesothelioma. From optimizing drug delivery systems to personalizing

Read More »