## Friday, April 8, 2016

https://www.quora.com/How-can-the-pair-a-b-a-b-in-mathbb-Z-be-found-such-that-a-frac-1-3-+-b-frac-1-3-3-is-also-an-integer

# How can the pair (a,b)$\left(a,b\right)$, a$a$, b∈ℤ$b\in \mathbb{Z}$ be found such that (a13+b13)3$\left({a}^{\frac{1}{3}}+{b}^{\frac{1}{3}}{\right)}^{3}$ is also an integer?

One can easily observe that this is satisfied whenever a and b are themselves cube of integers. For example if ab=8, 27; then the expression becomes 125. However this can be generalised to the case where the cube free part of a and b are equal.
Lets define the cube-free part of a given integer N. We first prime factorise the integer. Then we divide N by all cubes (or 6th powers etc.) of primes that occur at least 3 times (or 6 times etc.) in the factorisation. So for $54={3}^{3}×2$ the cube free part is 2. Hence the pair 2, 54 would also give an integer in the final expression. It is indeed 128. Now the first case is just a specialisation of this when the cube free part of both integers are 1.

1. public List<int[]> cubeRoot(int m, int n) {
2.                 List<int[]> res = new ArrayList<int[]>();
3.                 List<Integer> listM = new ArrayList<Integer>();
4.                 List<Integer> listN = new ArrayList<Integer>();
5.                 int cur = 1;
6.                 while(cur <= m / cur / cur) {
8.                         cur++;. 1point3acres.com/bbs
9.                 }.1point3acres缃�
10.                 cur = 1;
11.                 while(cur <= n / cur / cur) {
12.                         listN.add(cur * cur * cur);
13.                         cur++;. from: 1point3acres.com/bbs
14.                 }
15.                 int a = 1;
16.                 int b = 1;
17.                 HashMap<Integer, HashSet<Integer>> map = new HashMap<Integer, HashSet<Integer>>();
18.                 while(b <= n) {
19.                         for(int numA : listM) {
20.                                 a = b * numA;
21.                                 if(a <= m) {
22.                                         if(!map.containsKey(a)) {
23.                                                 map.put(a, new HashSet<Integer>());
24.                                         }
27.                                 }
28.                                 else {
29.                                         break;
30.                                 }
31.                         }.1point3acres缃�
32.                         b++;. From 1point 3acres bbs
33.                 }.鐣欏璁哄潧-涓€浜�-涓夊垎鍦�
34.                 a = 1;
35.                 b = 1;
36.                 while(a <= m) {
37.                         for(int numB : listN) {
38.                                 b = a * numB;
39.                                 if(b <= n) {
40.                                         if(!map.containsKey(a)) {
41.                                                 map.put(a, new HashSet<Integer>());
42.                                         }
43.                                         else {
44.                                                 if(map.get(a).contains(b)) {
45.                                                         continue;
46.                                                 }
47.                                         }
50.                                 }
51.                                 else {
52.                                         break;
53.                                 }
54.                         }
55.                         a++;
56.                 }. 涓€浜�-涓夊垎-鍦帮紝鐙鍙戝竷
58.         }
public static int cubes(int M, int N){
int count = 1;
for(int a = 1; a <= M; a++){
for(int b = 1; b <= N; b++){
double x = Math.pow(a, 1/3.) + Math.pow(b, 1/3.);
if(x == Math.round(x)) count++;
}
}
return count;
}