void find_triplet(int in) { //int out[3]; int try1, try2, try3, t1remainder, t2remainder, t3remainder; for (try1 = 1; try1 < find_next_triangular(in); try1++) { t1remainder = in - triangular(try1); //printf("t1remainder: %i", t1remainder); if (t1remainder == 0) { printf("%i = %i\n", in, triangular(try1)); return; } else { for (try2 = 1; try2 < find_next_triangular(t1remainder); try2++) { t2remainder = t1remainder - triangular(try2); if (t2remainder == 0) { printf("%i = %i + %i\n", in, triangular(try1), triangular(try2)); return; } else { for (try3 = 1; try3 < find_next_triangular(t2remainder); try3++) { t3remainder = t2remainder - triangular(try3); if (t3remainder == 0) { printf("%i = %i + %i + %i \n", in, triangular(try1), triangular(try2), triangular(try3)); return; } } } } } } }
void find_triplet(int in, int out[]) { int max_index = find_next_triangular(in); for (int i = 0; i < max_index; i++) { for (int j = 0; j < max_index; j++) { for (int k = 0; k < max_index; k++) { if (triangular(i) + triangular(j) + triangular(k) == in) { out[0] = triangular(i); out[1] = triangular(j); out[2] = triangular(k); return; } } } } }