Project Euler 70 - Totient Permutation
Official link: https://projecteuler.net/problem=70
Thought Process
In Problem 69 we were looking to maximize n/φ(n), now we are looking to minimize so let's reverse the logic
Now let's notice 3 key facts which help speed up the problem greatly
We are looking for the least amount of prime factors, but we cannot have just one because let's say it is a prime,p then p/φ(p) = p/(p-1), and clearly p-1 and p cannot be permutations of each other
We will now look for 2 primes, in order to minimize n/φ(n) we want to maximize φ(n) and minimize n, this implies that the 2 prime factors sshould both be near sqrt(10,000,000) ~3126
Using the 2nd way to calculate φ(n) from Eulers Totient Function we see that if n=pq where p, q are primes, then φ(n)=φ(pq)=(p-1)(q-1)
Using all this we now have a quick way to solve this problem,
do a double nested loop with variables x, y, going through all primes near 3126 (I went up to 10,000)
See if x*y is a permutation of (x-1)(y-1)
If it is see if it less than your current minimum
Originally I solved this without point 3 and it took ~300sec now it takes about ~0.5 sec
I used my Prime Generator function for this
Interactive Code
Enter an integer (yourinput)
Code will output the n such that 1 <= n <= yourinput and the ratio /φ(n) produces a minimum and are permutations of each other