Java 8,211字节
import java.util.*;n->{List l=new Stack();for(int a=2,b;a<132;a++)for(b=2;b<132;b++)if(p(a)*p(b)>0)l.add(Math.pow(a,b));Collections.sort(l);return l.get(n);}int p(int n){for(int i=2;i<n;n=n%i++<1?0:n);return n;}
效率很低的方法。它基本上计算从2 2到999 999 132 132的所有PPP,并将其存储在列表中,然后对该列表进行排序,然后n
从该列表中获取第“ th”项。
编辑:我现在使用132 132而不是使用999 999来获得28,225个项目的列表,而不是使用999 999来得到28,225个项目的列表。这样可以大大提高性能,并且完全可以接受,因为质询指出我们应该支持索引0到1,000的输入。(但是,更改为不会影响字节数。)1e3
132
说明:
在这里尝试。
import java.util.*; // Required import for List, Stack and Collections
n->{ // Method with integer as parameter and Object as return-type
List l=new Stack(); // List to store the PPPs in
for(int a=2,b;a<132;a++) // Loop (1) from 2 to 1,000 (exclusive)
for(b=2;b<132;b++) // Inner loop (2) from 2 to 1,000 (exclusive)
if(p(a)*p(b)>0) // If both `a` and `b` are primes:
l.add(Math.pow(a,b)); // Add the power of those two to the List
// End of loop (2) (implicit / single-line body)
// End of loop (1) (implicit / single-line body)
Collections.sort(l); // Sort the filled List
return l.get(n); // Return the `n`'th item of the sorted List of PPPs
} // End of method
int p(int n){ // Separated method with integer as parameter and return-type
for(int i=2; // Index integer (starting at 2)
i<n; // Loop from 2 to `n` (exclusive)
n=n%i++<1? // If `n` is divisible by `i`:
0 // Change `n` to 0
: // Else:
n // Leave `n` the same
); // End of loop
return n; // Return `n` (which is now 0 if it wasn't a prime)
} // End of separated method