Форум » C/C++ для начинающих (C/C++ for beginners) » Рекурсивный вывод простых делителей числа на консоль в C++ » Ответить

Рекурсивный вывод простых делителей числа на консоль в C++

Сыроежка: Эта тема мною создана в связи с вопросом на Stackoverflow Prime factors in c by using only recursion, который попался мне на глаза. Задания на рекурсию часто встречаются для начинающих программистов. Функция, приведенная в вопросе, может быть реализована в C++ следующим образом [pre2] #include <iostream> std::ostream & prime( unsigned int n, unsigned int i = 2, std::ostream &os = std::cout ) { if ( n > 1 ) { if ( n % i == 0 ) { os << i << ' '; n /= i; } else { ++i; } prime( n, i, os ); } return os; } int main() { while ( true ) { std::cout << "Enter a non-negative integer number (0 - exit): "; unsigned int n; if ( not ( std::cin >> n ) or ( n == 0 ) ) break; std::cout << '\n'; prime( n ) << "\n\n"; } } [/pre2] Вывод этой демонстрационной программы может быть, к примеру, следующим: [pre2] Enter a non-negative integer number (0 - exit): 1 Enter a non-negative integer number (0 - exit): 2 2 Enter a non-negative integer number (0 - exit): 3 3 Enter a non-negative integer number (0 - exit): 4 2 2 Enter a non-negative integer number (0 - exit): 5 5 Enter a non-negative integer number (0 - exit): 6 2 3 Enter a non-negative integer number (0 - exit): 7 7 Enter a non-negative integer number (0 - exit): 8 2 2 2 Enter a non-negative integer number (0 - exit): 9 3 3 Enter a non-negative integer number (0 - exit): 10 2 5 Enter a non-negative integer number (0 - exit): 11 11 Enter a non-negative integer number (0 - exit): 12 2 2 3 Enter a non-negative integer number (0 - exit): 13 13 Enter a non-negative integer number (0 - exit): 14 2 7 Enter a non-negative integer number (0 - exit): 15 3 5 Enter a non-negative integer number (0 - exit): 0 [/pre2]

Ответов - 0



полная версия страницы