Phantom's Python Challenge

View as PDF

Submit solution

Points: 40 (partial)
Time limit: 4.0s
Memory limit: 768M

Problem type

Allowed languages

After all the ordeal, Christine decided to save your lives by kissing the Phantom. That was very nice of her. However, the Phantom considers letting Christine leave with Raoul, if and only if you can convince him that your party is worthy. He challenges you to write a program that shows all the primes under a specific number, while marking the twin primes. Easy as it may sound, the Phantom is also an expert programmer: you have to prove yourself to be at least as good as him. In Python, he expects you to write it in one statement. This means, no new lines or semi-colons are allowed. To prevent the cheap way of achieving this, you are also not allowed to use eval or exec. To make sure he did not save that scarf for nothing, Raoul bribes you with 40 staggering points.

Input Specification

The input will be one line, containing the number N, such that N \in \{50, 100, 1\,000, 1\,000\,000, 10\,000\,000\}.

Output Specification

All the primes smaller than N, separated by whitespace, with a * after every number forming a twin prime with another. A twin prime is defined as a prime number n such that n-2 or n+2 are prime.


If your solution is correct and contains only one statement without eval or exec, you get 10 points. For full points, your solution must be at most 118 characters long.

More accurately, let L be the length of your solution. If your solution is wrong, you receive 0. If L \ge 160, you get \left(\dfrac{160}{L}\right)^2 \times 20 + 10 points. If L < 160, your score is \min\left(40, 40-10\cdot\dfrac{L-118}{42}\right).

Sample Input


Sample Output



  • 0
    institutionalisation  commented on Nov. 27, 2017, 6:54 p.m.

    Help please. What's causing my code to MLE? sys.getsizeof(set([*range(int(1e7))])), the maximum size of my sieve, returns 134217844 \simeq 130MB on my computer. Why is my code using so much more than that?

    • 0
      kipply  commented on Nov. 27, 2017, 7:06 p.m.

      Pypy, despite fast is not very efficient with memory.

      • 0
        institutionalisation  commented on Nov. 27, 2017, 7:19 p.m.

        My code TLEs on PY3 but would otherwise still MLE.

  • 0
    echofox  commented on Sept. 25, 2017, 1:49 p.m. edited

    e: help

    • 3
      Xyene  commented on Sept. 25, 2017, 2:39 p.m.

      Work on it for more than 2 hours 😃

      • 0
        echofox  commented on Sept. 25, 2017, 7:00 p.m.

        blasphemy :o

  • 1
    Epicnerdking  commented on April 5, 2016, 5:21 p.m. edited
    Can we use lambda?

    Never mind :), great problem btw!

  • 2
    GaryZ  commented on April 7, 2015, 11:44 p.m.
    There goes my evening :P

    Thanks for the fun problem, guys!

    • 4
      FatalEagle  commented on April 7, 2015, 11:52 p.m.

      Never did I think I would see the day someone actually solves this problem.

    • 0
      quantum  commented on April 7, 2015, 11:47 p.m.

      Good job. Now try to make it even shorter!

      • 3
        GaryZ  commented on April 7, 2015, 11:51 p.m.

        Too late, I peeked at your code.

  • 0
    quantum  commented on Dec. 17, 2014, 10:48 p.m.
    Memory limit increased to 256M

    Increased memory limit to 256M. This will allow the problem to be solvable on 64-bit judges.

  • 0
    quantum  commented on Nov. 30, 2014, 12:44 p.m.
    Scoring Change

    Due to my discovery of an 146 character solution, the old character limit of 220 no longer makes any sense. Therefore, the full score solution now requires 160 characters.

    This problem is now out of 30 points so that any old score will not decrease.