Project Euler > Problem 124 > Ordered radicals (Java Solution)

Problem:

The radical of n, rad(n), is the product of distinct prime factors of n. For example, 504 = 23 [×] 32 [×] 7, so rad(504) = 2 [×] 3 [×] 7 = 42.

If we calculate rad(n) for 1 [≤] n [≤] 10, then sort them on rad(n), and sorting on n if the radical values are equal, we get:

Unsorted

Sorted

n

rad(n)


n

rad(n)

k
1
1

1
1
1
2
2

2
2
2
3
3

4
2
3
4
2

8
2
4
5
5

3
3
5
6
6

9
3
6
7
7

5
5
7
8
2

6
6
8
9
3

7
7
9
10
10

10
10
10

Let E(k) be the kth element in the sorted n column; for example, E(4) = 8 and E(6) = 9.

If rad(n) is sorted for 1 [≤] n [≤] 100000, find E(10000).


Solution:

2783915460

Code:
The solution may include methods that will be found here: Library.java .

public interface EulerSolution{

public String run();

}
/* 
* Solution to Project Euler problem 24
* By Nayuki Minase
*
* http://nayuki.eigenstate.org/page/project-euler-solutions
* https://github.com/nayuki/Project-Euler-solutions
*/


public final class p024 implements EulerSolution {

public static void main(String[] args) {
System.out.println(new p024().run());
}


public String run() {
// Initialize
int[] array = new int[10];
for (int i = 0; i < array.length; i++)
array[i] = i;

// Permute
for (int i = 0; i < 999999; i++) {
if (!Library.nextPermutation(array))
throw new AssertionError();
}

// Format output
String ans = "";
for (int i = 0; i < array.length; i++)
ans += array[i];
return ans;
}

}

No comments:

Post a Comment