Euler's Totient function, φ(n) [sometimes called the phi function], is used to determine the number of numbers less than n which are relatively prime to n. For example, as 1, 2, 4, 5, 7, and 8, are all less than nine and relatively prime to nine, φ(9)=6.
n | Relatively Prime | φ(n) | n/φ(n) |
2 | 1 | 1 | 2 |
3 | 1,2 | 2 | 1.5 |
4 | 1,3 | 2 | 2 |
5 | 1,2,3,4 | 4 | 1.25 |
6 | 1,5 | 2 | 3 |
7 | 1,2,3,4,5,6 | 6 | 1.1666... |
8 | 1,3,5,7 | 4 | 2 |
9 | 1,2,4,5,7,8 | 6 | 1.5 |
10 | 1,3,7,9 | 4 | 2.5 |
It can be seen that n=6 produces a maximum n/φ(n) for n 10.
Find the value of n 1,000,000 for which n/φ(n) is a maximum.
%echo %prime_list %prime_iterator % % The answer should be the smallest number with the most distinct prime % factors: thus we multiply the smallest primes together until we hit % the ceiling % % (I could have just printed 2*3*5*7*11*13*17, but that didn't feel % like much of a program) % p69()-> Iter=prime_iterator(self()), Iter!next, p69(1,Iter). p69(Prod,Iter)-> receive {prime,N}-> if N*Prod > 1000000-> io:format("~w~n",[Prod]); true-> Iter!next, p69(Prod*N,Iter) end end.