Skip to main content

Problem 49 Project Euler Solution with Python

Prime permutations

The arithmetic sequence, 1487, 4817, 8147, in which each of the terms increases by 3330, is unusual in two ways: (i) each of the three terms are prime, and, (ii) each of the 4-digit numbers are permutations of one another.

There are no arithmetic sequences made up of three 1-, 2-, or 3-digit primes, exhibiting this property, but there is one other 4-digit increasing sequence.

What 12-digit number do you form by concatenating the three terms in this sequence?


An another question on primes and permutations. I will explain to you, the algorithm I have used in program, in this section,. As I have given some random names to the variables(I didn't knew what to name the variables in a meaningful way). This issue might confuse you and I will explain to you the code in the program section.

 As the question states that the number is prime, and it is 4 digit number it is better that we will sieve our prime numbers upto 10000. One more condition states that 1487 is the first case, so we will remove all the primes less than or equal to 1487.

I think it will be better if I will explain you the algorithm step by step.

1) Prime sieve upto 10000.
2) Remove all the primes less than 1487 in the primes list which we have created in Step 1.
3) Take each and every prime number and create permutations of the prime number.
4) Remove all the duplicates in the list generated in Step 3. Only unique elements are entertained.
5) Sort the list in ascending order.
6) If the length of the list generated till Step 5 is greater than or equal to 3 then go to Step 7 otherwise continue for next iteration.
7) Start a for loop to iterate through each and every number in the list. In the iteration, take a number and subtract it with other number, call it difference. Now add the difference to the second element under consideration and check if the new element(second number + difference) is in the list. If the new number is in the list stop looping and return the three numbers, else continue with the next list.

Program  

We have used Sieve of Eratosthenes from Problem 37 Project Euler Solution with python.
You can learn more about Sieve from Wikipedia.

Line 35 - Line 41: create function is the Step 7.

Line 44: Step 1.

Line 47: Step 2.

Line 51 & Line 52: Step 3.

Line 53: Step 4.

Line 54: Step 5.

Line 55 - Line 58: Step 6 with Step 7 inherited

You can download the source code from Github Gist pep49.py

Output

Summary

When I first wrote solution for this problem I only considered lists, which had length of 3. This mistake didn't give me answer, which made me think for lists whose length is greater than or equal to 3. I got the answer. I am satisfied with the solution which I have written, but there is still little scope for improvement. One can think in removing the unnecessary if statements if any in the program to improve the performance of the program

As always you can comment in the comment box below if you have any doubt or haven't understood anything. I will be glad to help you.

Please do comment if you have found any typo or have a different or better program or have a suggestion. I will be very happy to view each of them.

You can also contact me.

Thank you. Have a nice day😃!

Popular posts from this blog

Making a quiz web app with python and flask

Edit : When you are creating a web app with h tml templates, then y ou will have to sa ve the html file in templates folder in the Current Wor ki ng Directory( CWD). If you save the file in the C W D directl y you will get a TemplateNotFound error. Thank you Udhay for pointing it out.   In this post we will create a quiz website using python . I will be using the flask framework . After reading this tutorial you will learn form submission , flask templates , python code in flask templates , shuffling the questions and options with the random module and few others.  Please note that this tutorial is not big as it seems to be. Some of the code has been rewritten to maintain consistency and also font size is somewhat big so that your eyes won't get stressed reading this tutorial. Also the content has not occupied the full width of the page. In this tutorial I am assuming that you are having a very basic understanding of the flask framework . Please refer the documentation

Problem 11 Project Euler Solution with python

Largest product in a grid In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07

Problem 60 Project Euler Solution with python

Prime pair sets The primes 3, 7, 109, and 673, are quite remarkable. By taking any two primes and concatenating them in any order the result will always be prime. For example, taking 7 and 109, both 7109 and 1097 are prime. The sum of these four primes, 792, represents the lowest sum for a set of four primes with this property. Find the lowest sum for a set of five primes for which any two primes concatenate to produce another prime. This problem is j u st a brute force problem. If you have come here because you don't know the limit upto which you will h ave to gener ate the prime numbers t hen go ahe ad and t r y with 10,000 . When I first start ed solving the problem I chose 1 million(beca use most of the problem s on project E uler have this limit ), but it took very long for the computer to fin d the solution. After searching on the internet then I found many people choosing 10, 000 so I have changed my in put f rom 1 million to 10000 and the output was f ast. He