VOOZH about

URL: https://www.geeksforgeeks.org/dsa/check-number-power-k-using-base-changing-method/

⇱ Check if a number is power of k using base changing method - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Check if a number is power of k using base changing method

Last Updated : 1 May, 2023

This program checks whether a number n can be expressed as power of k and if yes, then to what power should k be raised to make it n. Following example will clarify : 
Examples: 
 

Input : n = 16, k = 2 
Output : yes : 4
Explanation : Answer is yes because 16 can 
be expressed as power of 2. 
 
Input : n = 27, k = 3 
Output : yes : 3
Explanation : Answer is yes as 27 can be
expressed as power of 3.

Input : n = 20, k = 5
Output : No
Explanation : Answer is No as 20 cannot 
be expressed as power of 5. 


 


We have discussed two methods in below post 
:Check if a number is a power of another number
In this post, a new Base Changing method is discussed.
In Base Changing Method, we simply change the base of number n to k and check if the first digit of Changed number is 1 and remaining all are zero.
Example for this : Let's take n = 16 and k = 2. 
Change 16 to base 2. i.e. (10000)2. Since first digit is 1 and remaining are zero. Hence 16 can be expressed as power of 2. Count the length of (10000)2 and subtract 1 from it, that'll be the number to which 2 must be raised to make 16. In this case 5 - 1 = 4.
Another example : Let's take n = 20 and k = 3. 
20 in base 3 is (202)3. Since there are two non-zero digit, hence 20 cannot be expressed as power of 3.
 

Output: 
 

Yes

Time Complexity: O(logK n)

Space Complexity: O(1)

Optimized Approach:

This approach avoids the need to convert n to base k and check whether it can be represented using only the digits 0 and 1. It also avoids the need to track whether a 1 has already been seen. This results in a simpler and more efficient algorithm.

Here's a step-by-step explanation of the code:

  1. Define the isPrime function which takes an integer n as input and returns true if n is prime, and false otherwise.
  2. Define the isSumOfPrimes function with parameter n.
  3. Loop over all numbers from 2 to n/2 (inclusive) as potential prime numbers, and check whether each one is a prime and whether the difference between n and that number is also a prime. The loop continues until the first pair of primes is found.
  4. If a pair of primes is found, return true. Otherwise, return false.
  5. In the main function, set n to the desired value.
  6. Call the isSumOfPrimes function with n.
  7. If the function returns true, print "Yes" to the console, indicating that n can be expressed as the sum of two prime numbers. Otherwise, print "No".

OUTPUT:

YES

Time Complexity: O(logK n)

Space Complexity: O(1)


 

Comment
Article Tags: