Find maximum operations to reduce N to 1 in Python


Suppose we have two numbers P and Q and they form a number N = (P!/Q!). We have to reduce N to 1 by performing maximum number of operations possible. In each operation, one can replace N with N/X when N is divisible by X. We will return the maximum number of operations that can be possible.

So, if the input is like A = 7, B = 4, then the output will be 4 as N is 210 and the divisors are 2, 3, 5, 7.

To solve this, we will follow these steps −

  • N := 1000005

  • factors := an array of size N and fill with 0

  • From the main method, do the following −

  • for i in range 2 to N, do

    • if factors[i] is same as 0, then

      • for j in range i to N, update in each step by i, do

        • factors[j] := factors[j / i] + 1

  • for i in range 1 to N, do

    • factors[i] := factors[i] + factors[i - 1];

  • return factors[a] - factors[b]

Example

Let us see the following implementation to get better understanding −

 Live Demo

N = 1000005
factors = [0] * N;
def get_prime_facts() :
   for i in range(2, N) :
      if (factors[i] == 0) :
         for j in range(i, N, i) :
            factors[j] = factors[j // i] + 1
   for i in range(1, N) :
      factors[i] += factors[i - 1];
get_prime_facts();
a = 7; b = 4;
print(factors[a] - factors[b])

Input

7,4

Output

4

Updated on: 25-Aug-2020

168 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements