Вывод 3 чисел, которые в сумме дают число n
Не должны повторяться перестановки - значит для каждого множества слагаемых {a, b, c} можно найти множество {a', b', c'}, образованное перестановкой элементов исходного множества, такое, что a'<=b'<=c'. Значит каждый следующий вложенный цикл должен начинаться не с 1, а со значения итератора предыдущего цикла.
---
Подумал ещё:
При условии a<=b<=c, a+b+c=n значение a не может быть больше n/3, иначе b либо c будут б̶о̶л̶ь̶ш̶е меньше, чем a. 
Значение b не может быть больше, чем (n-a)/2, иначе c будет б̶о̶л̶ь̶ш̶е меньше b.
Значение c будет равно (n-a-b).
Итого, получаемint n = Integer.parseInt(reader.readLine());
for (int i = 1; i <= n/3; i++) {
    for (int j = i; j <= (n-i)/2; j++) {
        System.out.println("Числа " + i + " + " + j + " + " + (n-i-j));
    }
}
Банальный n3 не пройдет.