помогите пожалуиста решить это

Считайте натуральное число n. Отобразите все тройки натуральных чисел x, y, z (1 <x <y <z <n), которые являются делителями n и обладают тем свойством, что x + y + z = n. Программа будет отображать на экране отдельными строками тройку в соответствии с требованием, причем числа в тройке расположены строго по возрастанию и разделены пробелом. Если такого триплета нет, то он появится на экране не существует. Примеры: Для n = 24 получаем 4 8 12. Для n = 20 отображается не существует.


Ответы (1 шт):

Автор решения: Danis
#include<iostream>

int main(int argc, char *argv[])
{
    int n = 24;
    
    for (int x = 0; x < n; x++){
        for (int y = 0; y < n; y++){
            for (int z = 0; z < n; z++){
                if (1 < x){
                    if (x < y){
                        if (y < z){
                            if (z < n){
                                if (n % x == 0){
                                    if (n % y == 0){
                                        if (n % z == 0){
                                            if (x + y + z == n){
                                                std::cout << x << ' ' << y << ' ' << z << std::endl;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
→ Ссылка