FINDPRM - Finding Primes
One commonly used method to calculate all primes in the range [2..n] is to start with the number 2, mark it as prime, and mark all its multiples (excluding itself) as not prime. Then, we find the next smallest unmarked number, mark it as prime, and mark all its multiples (excluding itself) as not prime. Continuing this way, we get a list of all primes.
Now, let us say that we modified the above algorithm, and start with n instead of 2. We mark it as prime, and mark all its factors (excluding itself) as not prime. Then we find the next greatest unmarked number, mark it as prime, and mark all its factors (excluding itself) as not prime. Continuing this way, we get a list of all primes.
Now you wonder, given a value of n, how many numbers are such that both the above algorithms will mark them as prime?
The first line contains T the number of test cases. Each of the next T lines contain an integer n.
Output T lines, one for each test case, containing the required answer.
Sample Input :
Sample Output :
1 <= T <= 100000
2 <= n <= 10000000
my 50th :)
learned the beauty of pre-computation from this problem
same code TLE in JAVA, Accepted in C++
Easy question. Just simple sieve and some minor modification to find out number of primes :)Last edit: 2017-12-29 07:51:05
Needs Fast I/O ... Maybe its better if its mentioned as LARGE I/O
Precomputation makes it a cakewalk!!
I am using regular sieve, with binary search, but still getting TLE Also using scanf and printf. Any idea why?
learnt a lot after 3 hours..3 solution...but 1 accepted...finally
Similar question ALICESIE