You're right (sorry about that ). But in this case, the most naive looping algorithm in a slow interpreted language is amply sufficient (i.e. on a modern machine, 10^5 or 10^6 does not make a big difference even for python).

On second thought, however, it could be really interesting to have "Carmichael Numbers Redux" puzzle, where one would have to implement some more advanced algorithms (cf. e.g. Wikipedia; it looks like a basic cryptography-related exercice). Actually, as you remarked, it's enough to increase the upper bound and deal with bigger numbers.

The only delicate question here is to get the range of the numbers right -- so that one couldn't break it by brute force (even in c++) and yet one could solve it in a scripting language with a smart algorithm.

If some others find such a puzzle interesting, just let me know here and I'll do some testing to find the right numbers. What do you think?