Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 17.11.2019
Сообщений: 11

Разложить большое число на множители

27.11.2019, 13:05. Показов 2896. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача такова: на вход подается очень большое число(больше 11 знаков), нужно при помощи длинной арифметики разложить его на простые множители. Сам я с длинной арифметикой не сталкивался и не знаю как реализовать свой алгоритм.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.11.2019, 13:05
Ответы с готовыми решениями:

Разложить число на простые множители
Если не трудно, можете найти где у меня ошибка, а то я новичок, никак не могу справится с этой задачкой: #include <iostream> ...

Разложить число на простые множители
Дано натуральное число n. Напечатать разложение этого числа на простые множители. Реализовать два варианта: 1) каждый простой множитель...

Разложить число на простые множители
Я для этого написал программу : #include <stdio.h> #define MAXN 1000 int main(){ ...

9
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.11.2019, 13:31
Цитата Сообщение от Alex_ZeeKer Посмотреть сообщение
я с длинной арифметикой не сталкивался и не знаю как реализовать
Где-то я слышал такую фразу - "Каждый уважающий себя программист (или собирающийся себя уважать) хоть раз в жизни делал свою собственную маленькую длинку"
Можно, конечно, взять готовый пакет. Но имхо, интереснее сделать самому. Это не очень сложно. Надо просто вспомнить, как в начальных классах школы учили складывать, умножать и делить "столбиком". Вы ведь навярняка это умеете. А теперь попробуйте объяснить свое умение туповатенькому, но исполнительному роботу.
Тут очень важно выбрать правильное представление, чтобы в дальнейшем не завязнуть в не имеющих отношения деталях.
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
27.11.2019, 14:23
Цитата Сообщение от Alex_ZeeKer Посмотреть сообщение
Задача такова: на вход подается очень большое число(больше 11 знаков)
Берите 64-битовый long long и не морочьте голову (18 знаков точно потянет).
0
0 / 0 / 0
Регистрация: 17.11.2019
Сообщений: 11
27.11.2019, 14:48  [ТС]
Уже пробовал, препод не зачел, мол, надо через строки)
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.11.2019, 19:27
Цитата Сообщение от Renji Посмотреть сообщение
и не морочьте голову
Это точно

Добавлено через 6 минут
Ибо голова нам дана не для того чтобы думать, а чтобы быстренько подъискать готовые решения, пусть даже совершенно неадекватные. А вдруг удастся обмануть и пройти пару первых тестов?
Увы!
Цитата Сообщение от Alex_ZeeKer Посмотреть сообщение
пробовал, препод не зачел,
Но это ничего! Может быть прохезает в другом случае.
Но главное - дать дельный совет.

Добавлено через 8 минут
Цитата Сообщение от Alex_ZeeKer Посмотреть сообщение
очень большое число(больше 11 знаков)
Вот тут неплохо бы указать верхнюю границу. Так как ежели знаков более чем 2000000000, то надо будет другую технику применять. А уж ежели еще в 1000 раз больше, то совсем другую организацию решения задачи. Если увеличит этот предел еще в 1000 раз, то придется сдаться. В данное время все компьютеры мира эту задачу не решат.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
27.11.2019, 21:28
Цитата Сообщение от Байт Посмотреть сообщение
Ибо голова нам дана не для того чтобы думать, а чтобы быстренько подъискать готовые решения, пусть даже совершенно неадекватные. А вдруг удастся обмануть и пройти пару первых тестов?
О чем думать то предлагается?
1) Решаем задачу методом перебора множителей. Экспоненциальная сложность, на 128-битовых числах алгоритм скорее всего просто зависнет. Так нафига нам поддерживать больше 64 бит?
2) Решаем задачу каким-то навороченным способом с субэкспоненциальной сложностью. Да, да, вот прям сейчас сядем изобретать с нуля готовые алгоритмы из учебника высшей математики. Давайте еще с семиклассников потребуем чтоб понятие производной и интеграла сами вывели. А то ишь, развелось халявщиков, таблицу производных и первообразных им подавай.

Как ни крути, а задача именно на то чтобы найти и закодить готовое решение. Ну вот такой препод топикстартеру попался.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.11.2019, 23:17
Цитата Сообщение от Renji Посмотреть сообщение
Как ни крути,
Доводы ваши чрезвычайно убедительны. И прозорливость того, что нужно неразумному преподу от бедолаги ТС выше всяких похвал. Цитировать не буду. Стартовый топик у вас перед глазами.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
28.11.2019, 11:06
Пришел в голову любопытный подход к факторизации.
Составляем произведение нескольких первых простых, например 210. Находим остаток деления исследуемого числа на 210. Этот остаток проверяем на делимость на 2, 3, 5, 7 ...
Далее берем произведение следующих нескольких простых P = 11*13*17*19. Делим на него....
Общее количество операций этот подход не уменьшает. Даже увеличивает. Линейно. Но уменьшает количество длинных операций.
И если K - наибольшее представимое в целом типе, то для анализа чисел < K2 такой подход должен неплохо работать...
Я прекрасно понимаю, что это не те числа, факторизация которых может представлять промышленный интерес...
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
28.11.2019, 11:11
Renji, семиклассники не учат производные. Когда же производные начинают учить - их таки да, выводят без всяких таблиц для каждой функции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.11.2019, 11:11
Помогаю со студенческими работами здесь

Разложить натуральное число на простые множители
Разложить натуральное число на простые множители.(Нужно максимально простое решение, для новичков)

Разложить заданное число на простые множители
Ребята помогите реализовать задачу: разложить заданное число на простые множители.

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

Разложить число на простые множители через массив
разложить сложное число на простые множители, через массив.

Разложить на множители число с помощью рекурсии, найти НОД
Разложить на множители число с помощью рекурсии. В массиве целых чисел , которые являются собой знаменатели обычных дробей, найти...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru