



long list_of_primes[200] = {};
Number of prime numbers between 21000: 168 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101, 103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193, 197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307, 311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409, 419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521, 523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641, 643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757, 761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881, 883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997. 


Getelements()
seems an inefficient way to keep track of how many elements of the array are in use. It would be simpler to use an ordinary integer variable, give it an initial value of 1 because the array contains the prime number '2' as the first element. Then simply increment the count each time you add a new element. (Much better would be to use a vector instead of a plain array).


for
loop, since there are way more than 200 primes between 3 and 1000000, you can actually just loop until number_of_elements == 200. Also, since you know right off the bat that no even number (other than 2, which you've already taken care of) is prime, you can increment by 2 instead of just 1:


long list_of_primes[200]
, you might as well just be consistent and declare z as a long
as well.


z%list_of_primes[i] == 0
, you know that if your program reaches this point, z cannot possibly be divisible by list_of_primes[i], so you don't need to check that again:





