int program(int argc, string[] argv) { var n = 500; return leastsquare(n); } /*finds the least number of squares to sum up to n*/ int leastsquare(int n) { var cache = new int[]{n+1}; cache[0] = 0; cache[1] = 1; cache[2] = 2; cache[3] = 3; for (var i = 4; i < n + 1; i=i+1;) { /*set to some arbitrary high number*/ cache[i] = i; for (var k = 1; k < n; k = k + 1;) { var temp = k*k; if (temp > i) { } else { cache[i] = min(cache[i], 1 + cache[i - temp]); } } } return cache[n]; } int min(int y, int x) { if (x > y) { return y; } else { return x; } }