Wrote a program that would decompose any integer into factors.
#include <iostream> #include <cstdlib> using namespace std; bool isLCM (int num, int denum); int fill_array(int &num, int *arr); int main() { setlocale(LC_ALL,"rus"); int num; int *arr_of_denums = new int [1]; // массив для заполнения cin >> num; // в переменную n будет возвращен размер получившегося массива с делителями int n = fill_array(num, arr_of_denums); // вывод разложенного числа num на экран; for (int i = 0; i < n; i++) { if ( i == n - 1) cout << arr_of_denums[i]; //проверка на последний делитель // если он последний, то ненадо после него ставить '*' else cout << arr_of_denums[i] << " * "; } delete []arr_of_denums; return 0; } // функция принимает число num и делитель denum // в теле идет проверка на делимость num на denum bool isLCM(int num, int denum) { if ( num%denum == 0 ) return true; else return false; } // функция принимает число num и указатель на массив для заполнения arr // массив заполняется делителями числа num // и возвращает размер заполненного вектора int fill_array (int &num, int *arr) { int denums[] = { 2, 3, 5, 7, 11}; //массив делителей для числа num int j = 0; for (int i = 0; i < 5;) { if (isLCM(num, denums[i])) { arr[j] = denums[i]; num = num/denums[i]; j++; } else i++; } return j; } the program works, everything outputs correctly, but there is one thing: it does not fully decompose. I tried to decompose 1824, she derived 2 ^ 5 * 3, although the total decomposition would be 2 ^ 5 * 3 * 19. Actually, how to make her deduce that same 19? And at the same time, please rate how the code is written. I'm just learning, I want to write not only correctly, but also understandable :)