PRIME DISTANCE - MINDSTORMER
QUESTION BRIEF :
In the question A number X(secret no) was given to you, and you had to recursively do following things.
- Represent X in the form of 2n-z
- Find Nearest Prime no(y) to z
- Assign x=y
Repeat the process, untill x becomes less than or equal to 2, because there is no prime no less than 2.
Prerequisite : Preprocessing, Recursion,Brute Force
Approach :
According to constraint, x may be upto 500000 and the no of queries asked for x might be upto 100000.
So for perfect solution , all the three points must be done not more than O(1) for a step and for any starting value of x , it will converge to 2 very quickly.
- Preprocessing :
For number ranging from 1 to 1000000, we will store these three calculations already
- Prime no just less than it
- Bool (True or False) if current no is a prime
- Just next big Power of 2
Do Recursion and do each iteration in O(1) only.
- Algorithm :
- Intialize a list or "array of tuple" of [1000000][3] with default value [0,False,0]
- Run Seive Algorithm and correct the bool specified for list, change False to True for prime positions
- Make an array or list of size 20 since (2^20 > 1000000) and store the power of 2 in it.Also change the 3rd value of index(2^i) in list initialized in step 1 with index of the array(i)
- Now start with list initialized in step 1 , and do following change, and update the following thing: Previous prime no, next index of power 2 (i.e. 1st and 3rd value)
- Do Recursion as you want either with DP or Loop
Setter Code :
Uncomment all the print command , What's happening inside the code will be printed.
- Prime no just less than it
- Bool (True or False) if current no is a prime
- Just next big Power of 2
Do Recursion and do each iteration in O(1) only.
- Algorithm :
- Intialize a list or "array of tuple" of [1000000][3] with default value [0,False,0]
- Run Seive Algorithm and correct the bool specified for list, change False to True for prime positions
- Make an array or list of size 20 since (2^20 > 1000000) and store the power of 2 in it.Also change the 3rd value of index(2^i) in list initialized in step 1 with index of the array(i)
- Now start with list initialized in step 1 , and do following change, and update the following thing: Previous prime no, next index of power 2 (i.e. 1st and 3rd value)
- Do Recursion as you want either with DP or Loop
Uncomment all the print command , What's happening inside the code will be printed.
Comments
Post a Comment