Форум программистов, компьютерный форум CyberForum.ru

Разбить целое число на простые множители с помощью рекурсивного алгоритма - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск в ширину или глубину http://www.cyberforum.ru/cpp-beginners/thread699955.html
Лабораторная работа ТЕОРИЯ ГРАФОВ. РАСКРАСКА НЕОРИЕНТИРОВАННЫХ ГРАФОВ Цель работы: изучить особенности неориентированных графов и основные определения; научиться находить хроматическое число и хроматический класс для графа. Задачи: Написать программу (в произвольно выбранной среде программирования), которая реализует поиск хроматического числа, хроматического класса и способов раскраски...
C++ Алгоритм Витерби Нужно реализовать алгоритм свёрточного кодирования и алгоритм декодирования на основе ММП. Описание свёрточного алгоритма: Для начала выбираем параметры кодирования. Они выбираются один раз и будут постоянными для всей программы. k - количество бит в сообщении, которое передаётся на регистр; n - количество бит в закодированном сообщении (k<n); K - длина регистра; g:\{0,1\}^K\to \{0,1\}^n,... http://www.cyberforum.ru/cpp-beginners/thread699952.html
Заполнение двумерного массива без вложенных циклов C++
Даны два числа n и m. Создайте двумерный массив int A, заполните его таблицей умножения A=i*j и выведите на экран. При этом нельзя использовать вложенные циклы, все заполнение массива должно производиться одним циклом, например, for(i=0;i<n*m;++i). Как такое можно реализовать? Нужно каким-то образом плясать от индекса, как мне кажется, но вот как?
C++ Выполнить кольцевой сдвиг элементов массива
не понимаю как делать задание,туго идет. И вообще тяжело(( Помогите если можете)) Вот задание: Дан массив действительных чисел размером N и целое число К. Если в исходном массиве чисел больше чем К, то в исходном массиве выполнить кольцевой сдвиг его элементов так, чтобы первый максимальный элемент этого массива оказался на K-ом месте. Кольцевой сдвиг массива выполняется всеми его...
C++ Если максимальный элемент массива Х1 больше максимального Х2, то заменить им все отрицательные элементы матриц http://www.cyberforum.ru/cpp-beginners/thread699940.html
Вот условие:Вввести двумерные массивы Х1(n1*m1) и X2(n2*m2). если максимальный элемент массива Х1 больше максимального элемента массива Х2, то заменить им все отрицательные элементы матриц . В противном сллучае все положительные элементы.Массивы до и после преобразования вывести на экран . При решении реализовать процедуры ввода и вывода массивов Vvod2m (A,n,m ,name) Vivod(a,n,m,name ), а так же...
C++ Зачем нужны обычные массивы, если есть динамические? Всем привет! Вопрос в заголовке. Если динамический массив даёт те же и ещё больше функций и, при том, лучше обращается с памятью, зачем нужен обычный массив? подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2012, 01:18     Разбить целое число на простые множители с помощью рекурсивного алгоритма
Цитата Сообщение от lastProg Посмотреть сообщение
но не могу бы ты прокоментировать некоторые строки, я не совсем понимаю ихний смысл: 3, 6, 7, 11, 12, 19;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
void rec(int a, int b)// рекурсивная функция называется rec. В параметрах функции передается 2 целых числа
{
    if(a==1)// если число a равно 1 (число a, которое передали в параметрах функции)
        return;// то возвращаемся туда, откуда вызывали рек. функцию
    for(;;b++)// продолжаем цикл, увеличивая значение b (цикл продолжается бесконечно)
        if(a%b==0)// если нашли число b которое без остатка делится на a
        {
            cout<<b<<endl;
            rec(a/b, b);// вызываем рек. функцию (в параметрах ей передаем a/b и b)
            return;// после того как программа отработает вызов рек. функции из предыдущей строки возвращаемся сюда. Здесь программа отрабатывает оператор return (возвращается в точку откуда была вызвана эта рек. функция)
        }
}
int main()
{
    int a;
    cin>>a;
    rec(a, 2);// вызываем рек. функцию (в параметрах передаем число введенное пользователем и число 2, первое простое число) 
   return 0;
}
 
Текущее время: 17:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru