Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
1

Что делает программа

18.05.2022, 19:27. Показов 879. Ответов 9
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
void f(int n, int k) {
    if (k > n / 2) { 
        cout << n << " "; 
        return; 
    }
    if (n % k == 0) { 
        cout << k << " "; 
        f(n / k, k); 
    }
    else f(n, ++k);
}
int main() {
    int N = 19;
    f(125 + N,2);
 
    return 0;
}
Вывод:
Код
2 2 2 2 3 3
Есть программа с рекурсивной функцией, она делает что-то, возможно находит какие то определенные элементы, или считает что-то по какойто формуле. Надо разгадать загадку, надеюсь на вашу помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2022, 19:27
Ответы с готовыми решениями:

Я не могу понять что делает данная программа. Точнее что делают функции используемые в это коде
#include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;ctime&gt; using namespace std; int g(int a, int...

Что делает программа
t = 3; n = 3; x = a; for (int j = 0; j &lt; n; j++){ x = x + a * pow(t, n-j); } Всем привет!...

Что делает программа
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;windows.h&gt; using namespace std; int main(){ ...

Что делает программа
int f(int a){ int f, s = 0; for(int t = a; t &gt; 0; t /= 10){ f = t % 10; s += f; } return s; ...

Что делает программа?
не могу понять что делает программа? #include &lt;iostream&gt; using namespace std; bool...

9
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
18.05.2022, 19:51 2
Выводит делители числа n
0
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
18.05.2022, 20:04  [ТС] 3
zss, делители или множители? 2 * 2 * 2 * 2 * 3 * 3 = 144, в функцию передаем 125 + 19 = 144
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
18.05.2022, 20:06 4
Лучший ответ Сообщение было отмечено vadyansky как решение

Решение

Цитата Сообщение от vadyansky Посмотреть сообщение
Что делает программа
Программа выполняет факторизацию числа, то есть разложение числа на простые множители, при условии что функция f изначально вызывается с параметром k = 2 (как это и сделано).
0
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
18.05.2022, 20:09  [ТС] 5
TheCalligrapher, Спасибо, а что в функции значит это самое k = 2, за что оно отвечает? ?
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
18.05.2022, 20:10 6
Цитата Сообщение от vadyansky Посмотреть сообщение
Надо разгадать загадку
Неужели по приведенному выводу 2 2 2 2 3 3 не очевидно, что делает программа?
0
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
18.05.2022, 20:10  [ТС] 7
TheCalligrapher, , не приходило это в голову мне к сожалению
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
18.05.2022, 20:10 8
Цитата Сообщение от vadyansky Посмотреть сообщение
а что в функции значит это самое k = 2 ?
Мне не ясен вопрос.

Еще раз: для получения факторизации числа N функция должна изначально вызываться как f(N, 2).
0
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
18.05.2022, 20:11  [ТС] 9
TheCalligrapher, я имею ввиду почему именно 2, а не 4 например?
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
18.05.2022, 20:16 10
Лучший ответ Сообщение было отмечено vadyansky как решение

Решение

Цитата Сообщение от vadyansky Посмотреть сообщение
я имею ввиду почему именно 2, а не 4 например?
Ну видимо потому, что автору этого кода поставили задание: написать программу, которая будет выполнять факторизацию числа, а также "обязательно использовать рекурсию". Вот они и написал. Чтобы программа соответствовала заданию, надо чтобы в самый верхнем вызове было f(..., 2). Потому что 2 - минимальное простое число. Чтобы получить факторизацию нужно начинать поиск факторов с минимального простого числа.

Реализован простейший общеизвестный алгоритм факторизации (Получить все простые делители числа), но вместо привычной циклической реализауции сделана рекурсивная. Видимо, это было требованием задания.

Можете вызвать f(..., 4). Получится что-то другое, скорее всего бесполезное.
0
18.05.2022, 20:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2022, 20:16
Помогаю со студенческими работами здесь

Что делает программа
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;windows.h&gt; using namespace std; int main(){ ...

Что делает программа
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;windows.h&gt; using namespace std; int main(){ ...

Что делает программа
Объясните пожалуйста пошагово что делает эта программа #include &lt;stdio.h&gt; #include &lt;fstream&gt;...

Что делает программа
int main(){ int t = 3; int n = 3; int a; int x = a; a = -13; a = -30; a = -19;

Что делает программа
for (int i = 0; i &lt; n; i++) { Arr = (rand() % 200 - 99)-(float)(rand() % 201) / 100.0; cout...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru