side note: If he is not using iPython, he might give it a go. There are free cloud based iPython notebooks and it is an excellent environment for investigations, with easy graphing etc. A couple of my students of similar age use it.
Test for primality rather than finding all primes
First I would show him how to extend his research by tweaking his current algorithm. As he can compute all primes up to $10^6$, he can evaluate primarily up to $10^{12}$ without any libraries and with basically the same algorithm.
He can therefore investigate prime conjectures much higher than he can evaluate and store a complete list of primes.
Mersenne Primes Test these and any other related conjectures he can devise up to $2^{40}$
Distribution of primes
An interesting case might be estimating the distribution of primes using statistical sampling. He could then try informal curve fitting. He could make predictions on the proportion of primes at various sizes of numbers and test them.
Non-prime related Montecarlo investigations
After he has got used to sampling, he can move away from primes and implement any number of Montecarlo algorithms.
He can easily calculate the value of $\pi$. He should be able to handle Pythagorus to find the distance from origin of a point. A simple method could be to make a random point with x,y each in [0,1], and count the proportion that is less than distance 1 from the origin. This proportion is the area of a quarter of a circle of radius 1 ($p\times 4 = \pi$).
Further to the above, he could investigate how many extra trials it takes to make an improvement of a significant figure.
Montecarlo methods opens up a range really interesting applications for computationally intensive mathematics.
probability
He can investigate the statistical distribution of rolling 1-2 dice, and possibly compare to the theoretical distributions. Lots of common statistical laws or fallacies can be investigated.
Or investigate basic binomial distributions with coin flips. He could find the exact distribution for 8 coin flips (maybe counting bits in integers up to $2^{8}-1$. What is the likelihood of getting 8 heads in a row? Or n heads in a row?
At some point he will need to take a statistical approach as the number of coin flips increases. What is the mean number of heads in n coin flips? He should be able to sort his list of results using a library function, and therefore easily find the interquartile range. How does this change as the number of flips increases?
If you use a weighted coin how does the above change?