Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 12
1

Разложение натурального числа на множители

25.10.2017, 21:56. Показов 1841. Ответов 2
Метки нет (Все метки)

Здравствуйте.

Условие: Найти все варианты разложения данного натурального числа на множители с помощью рекурсивной функции.

Сделал код, чтобы находить только один вариант. Вот мучаюсь и не могу понять как разлаживать на разные варианты.
Например, когда доходим до 15, то его можно разложить так: 15=5*3; 15=3*5; 15=15*1. И так нужно со всеми числами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
using namespace std;
 
void decomposeNumber(int num) {
    for (int i=2; i <= num; i++) {
        if (num % i == 0) {
            cout << i << ' ';
            decomposeNumber(num / i);
            break;
        }
    }
}
 
int main() {
    int input = 120;
    //cout << "Введите число:\n";
    //cin >> input;
 
    //for (int i=2; i <= input; i++) {
        cout << input << ": ";
        decomposeNumber(input);
    //    cout << endl;
    //}
 
}
Кликните здесь для просмотра всего текста
Вот еще пытался костыли делать, но тут все плохо...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
using namespace std;
 
void decomposeNumber(int num, int start) {
    for (int i=start; i <= num; i++) {
        if (num % i == 0) {
            cout << i << ' ';
            decomposeNumber(num / i, start);
            break;
        }
    }
}
 
int main() {
    int input = 120;
    //cout << "Введите число:\n";
    //cin >> input;
 
    for (int i=2; i <= input; i++) {
        cout << input << ": ";
        decomposeNumber(input, i);
        cout << endl;
    }
 
}


Буду благодарен за помощь.

Добавлено через 20 минут
Уже думаю сделать какой-то массив, куда записывать использованные множители, но нужно тогда как-то его очищать по умному...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2017, 21:56
Ответы с готовыми решениями:

Разложение натурального числа на простые множители
Выведите разложение натурального числа n &gt; 1 на простые множители. Простые множители должны быть...

Разложение на простые множители заданного натурального числа
Составить программу , печатающую разложение на простые мн0жители заданн0го натУральн0го числа n &gt; 0...

Описать функцию, находящую разложение заданного натурального числа на простые множители
Помогите написать программу, пожалуйста Описать функцию factors(a, n, F), находящую разложение...

Разложение числа на множители
Ребят, помогите пожалуйста. Пытаюсь сделать разложение числа, т.е. например будет 16=2*2*2*2,...

2
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
25.10.2017, 22:42 2
Вот похожая тема: Рекурсивный метод, выводящий все возможные разложения натурального числа n на множители
1
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 12
26.10.2017, 13:45  [ТС] 3
Спасибо большое. Все работает.

Решено.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2017, 13:45

Разложение числа на множители
Всем привет, надо разложить число на множители(определенные). С маленькими числами все работает....

Разложение числа на множители
var s1,s2,n: longint; f: integer; begin write('vvedite natural chislo '); ...

Разложение числа на простые множители
Дано натуральное число n ≥ 2. Составить программу разложения этого числа на простые множители:...

Разложение числа на простые множители (упрощенная). Зацикливание?
Добрый вечер. Написал небольшой код для разложения небольших чисел на простые цифры. По умолчанию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.