Achilles numbers: Difference between revisions

Content added Content deleted
(J: simplification)
(J: add some comments)
Line 76: Line 76:
+/achilles (+i.)/1 9*10^<:6
+/achilles (+i.)/1 9*10^<:6
664</lang>
664</lang>

Explanation of the code:

<tt>(1{__&q:)</tt> is a function which returns the non-zero power of the prime factors of a positive integer. (__&q: returns both the primes and their factors, but here we do not care about the primes themselves.)

<tt>+./</tt> returns the greatest common divisor of a list, and 1=+./ is true if that gcd is 1 (0 if it's false).

<tt>*/ .>&1</tt> is true if all the values in a list are greater than 1 (0 if not).

<tt>"0</tt> maps a function onto the individual (rank 0) items of a list or array (we use this to avoid complexities: for example if we padded our lists of prime factor powers with zeros, we could still find the gcd, but our test that the powers are greater than 1 would fail).

<tt>5&p:</tt> is euler's totient function.

<tt>(#~ predicate) list</tt> selects the elements of <tt>list</tt> where <tt>predicate</tt> is true.


=={{header|Raku}}==
=={{header|Raku}}==