Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author: d
This problem asks us to find two primes,
and
, that satisfy
. Equivalently,
.
Approach 1
A straightforward approach is to test all possible values of
and
. For example, we can use a for-loop that goes from
to
. Then we can calculate
using the equation
. Once we have
and
, we need to check if
and
are prime by using a primality test.
One approach is trial division. Suppose
is the input number. If the for-loop iterates from
to
, then trial division will take
time.
In practice, the overall time complexity is slightly slower than
. This is enough to get 6/15.
A slightly faster approach is to use trial division, ending at
(or floor(sqrt(x))
). Trial division will take
time.
In practice, the overall time complexity is slightly slower than
. This is enough to get 15/15.
Approach 2
Since
and
are at most
, we can precompute all the primes up to
using the sieve of Eratosthenes. This will take
time. Then we can use Approach 1 with each primality test taking
time.
The worst possible test case is
which requires
. As a result, the overall time complexity is
. This is enough to get 15/15.
Note: These 2 approaches have an Eliden time complexity. For context, please see this comment. Please don't ask for a proof of the time complexity.
Comments