Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/50: Рейтинг темы: голосов - 50, средняя оценка - 4.60
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6339 / 3073 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809

Посоветуйте функции для арифметики больших целых чисел

06.06.2024, 22:40. Показов 11493. Ответов 166
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сегодня начал писать свою библиотеку для работы с большими целыми числами.

Пока что реализовал следующие функции:

C++
1
2
3
4
5
6
7
8
9
10
11
12
std::string Add(const std::string&, const std::string&);
std::string Subtract(const std::string&, const std::string&);
std::string Multiply(const std::string&, const std::string&);
std::string Divide(const std::string&, const std::string&);
std::string Remainder(const std::string&, const std::string&);
std::string Power(const std::string&, const int);
std::string Factorial(const int);
std::string GCD(const std::string&, const std::string&);
std::string LCM(const std::string&, const std::string&);
std::string Abs(const std::string&);
std::string ISqrt(const std::string&);
std::string Fibonacci(const int);
Все эти функции работают с очень большими числами.
Что еще можете посоветовать? Какие важные функции я упустил?
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2024, 22:40
Ответы с готовыми решениями:

Ограничения VBA в реализации арифметики длинных (больших) чисел
Итак, моя юбилейная - первая тема на этом форуме. Здравствуйте Товарищи! Необходима помощь или совет от спецов этого форума. Работаю над...

Быстрая сортировка массива целых чисел, с использованием указателей и адресной арифметики
# include <stdio.h> # include <stdlib.h> void QuickSort(int *a, int size){ int *left = a; // Адрес 1 элемента int *right...

Написать шаблоны функций для для вычисления суммы произведений двух соседних чисел для трех целых чисел и в одномерном массиве целых чисел
Написать шаблоны функций для для вычисления суммы произведений двух соседних чисел для трех целых чисел и в одномерном массиве целых чисел:...

166
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6339 / 3073 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
08.06.2024, 15:50  [ТС]
Студворк — интернет-сервис помощи студентам
DrOffset, мне вообще все равно, как это будет написано, для меня важен результат

Чтобы в main я мог писать
a → BigInt
b → string
Add(a, b)
Add(a, "5")
Add("4","7")

Т.е. все возможные комбинации аргументов с типами BigInt, string, const char*. Т.е. чтобы все конструкторы работали.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
08.06.2024, 15:52
Royal_X, будет работать. Не вижу никаких проблем.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6339 / 3073 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
08.06.2024, 21:11  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
лучше переписать так
То меня спрашивают, почему я вытащил функции наружу... А теперь когда я их определил в классе, снова предлагают вытащить наружу и нет никакой гарантии, что сработает. Ибо функции обращаются к закрытым полям класса. Сейчас, когда всё внутри класса, этот friend не нужен. Но если я вытащу, то как буду обращаться к закрытым полям?

Я написал эти математические функции за несколько часов. Но уже пару суток всем форумом не можем решить эту проблему с классом.
Теперь я понимаю, почему все серьезные программы пишут на С без этого говно-ООП. Я не вижу в советах экспертов ни когерентности, ни логики. Просто гадание на кофейной гуще - делай так, делай сяк. Одна проблема исчезает, появляется другая.
0
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
08.06.2024, 21:15
Royal_X,

нет никакого гадания. Все беды начались от непонятной аллергии на a.ADD(b,c)
ну и тяги к неявным преобразованиям.

Я посоветовал так, как сделал бы я. А дальше сам решай, что тебе больше подходит.

Можно сделать по-разному - в этом прелесть языка

Добавлено через 50 секунд
к ООП это всё не относится, вообще говоря. Это особенности C++
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6339 / 3073 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
08.06.2024, 21:16  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Это особенности C++
ну так С++, по сути, это язык С + STL + говно ООП
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
08.06.2024, 21:17
Цитата Сообщение от Royal_X Посмотреть сообщение
почему все серьезные программы пишут на С
А потом переписывают на C++?
0
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
08.06.2024, 21:19

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
почему все серьезные программы пишут на С без этого говно-ООП
вот это особенно смешно. Серьёзного на C не напишешь, он ООП не поддерживает. Будут ошибки и утечки, будет лапша. Будет отладка на десятки лет



Добавлено через 34 секунды
Цитата Сообщение от Royal_X Посмотреть сообщение
ну так С++, по сути, это язык С
нет )

Добавлено через 1 минуту
Royal_X, C++ будет периодически выбивать у тебя почву из-под ног, привыкнешь
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
08.06.2024, 21:19
Алексей1153, Axel-Tobias Schreiner - "Object-oriented Programming in ANSI-C"
0
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
08.06.2024, 21:21
Croessmah, даже не заглядывая, понимаю, что там советы-велосипеды. Проще сразу C++ взять
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
08.06.2024, 21:25
Цитата Сообщение от Royal_X Посмотреть сообщение
Но если я вытащу, то как буду обращаться к закрытым полям?
Ты попробуй не просто подряд применять советы, а примерять их под ситуацию, которая у тебя возникает. Я же везде пишу условия (если то ..., если это ..., то так и сяк).
Ты же вот сам написал:
Цитата Сообщение от Royal_X Посмотреть сообщение
Кажется, мне доступ для записи к закрытым полям класса BigInt не нужен.
Я тебе говорю: если не нужен, и везде используются неявные преобразования, то толка от friend нет.
Но если нужен, то оставь friend. Или сделай методы основой функциональности, а в свободных функциях используй их вызовы (в примерах моих это было).

Мои слова - это же не абсолют, это разметка, которая просто оговариват какие-то границы применимости и целесообразность. Не первый раз сталкиваюсь, что здесь постоянно какие-то сложности у людей с пониманием этого. Вы (все) поймите, что работу программиста (даже если вы любитель) за вас никто не сделает. Это ваша работа. Я и остальные могут лишь обозначить какие-то вехи. Читайте внимательнее.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6339 / 3073 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
08.06.2024, 21:36  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Я тебе говорю: если не нужен, и везде используются неявные преобразования, то толка от friend нет.
Он не нужен за пределами класса. Но вот многие математические функции обращаются к закрытым полям и меняют данные. Сейчас все функции внутри класса. Вот я и говорю, что сейчас friend им не нужен, ведь они внутри класса и имеют доступ к закрытым полям. Но если я вытащу и сниму friend, то потеряю доступ.

Добавлено через 7 минут
Цитата Сообщение от DrOffset Посмотреть сообщение
даже если вы любитель
да на этом форуме получается, что все любители. Как тема про сортировку массива или записать математическое выражение по формуле, так сразу несколько десяток решений появляется. Как что-то немного сложное, то нет даже адекватных советов, в каком направлении двигаться. Винят только в том, что мне не нравится a.Add(b, c) или что я почему-то хочу чтобы кроме BigInt функция работала с string и const char*.
Ладно, буду сам разбираться. Не буду тратить ни ваше, ни моё время.
0
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
08.06.2024, 21:39
стадия "торг"
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
08.06.2024, 21:43
Royal_X, я бы такой класс проектировал так: все нужные функции - это методы (в первую очередь), или friend-функции (во вторую очередь, когда есть целесообразность), расчитывающие на работу ADL.
А все внешние функции (в третью очередь), которые предполагается использовать как Func(a, b), Func(a), - используют эту функциональность первой и второй очереди, и в них уже могут быть и преобразования и работа без ADL.

Тогда мы: максимально сосредотачиваем реализацию внутри класса, (как следствие) избегаем лишней дружбы, (как следствие) избегаем дублирования оъявлений.

Добавлено через 2 минуты
Цитата Сообщение от Royal_X Посмотреть сообщение
да на этом форуме получается, что все любители. Как тема про сортировку массива или записать математическое выражение по формуле, так сразу несколько десяток решений появляется.
За себя отвечу. Если ты заметил, я тут нигде не решаю никакие задачи, ни сложные, ни простые. Я тут просто консультирую по нюансам языка, и применению сопутствующих технологий. Это специально так. Потому что решение задач - это оплачиваемая работа.
0
08.06.2024, 21:57

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
Я тут просто консультирую по нюансам языка, и применению сопутствующих технологий. Это специально так. Потому что решение задач - это оплачиваемая работа.
Профессиональные консультации, также, всегда оплачиваемая работа )

0
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
08.06.2024, 21:59
а я решаю, если мне интересно или чтобы что-то вспомнить/получше разобраться
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
08.06.2024, 22:18
Нашел "в закромах" старый код BigUnsigned 20-летней давности (не мой), один заголовочный файл на 1200+ строк, с описанием.
Можно посмотреть, как раньше люди подобное делали (вдруг что поменялось с тех пор).
Там, правда, беззнаковые числа, но суть это не сильно меняет.

Ну и более компактный код (знаковый bigint 12-летней давности, тоже не мой, два файла).
Вложения
Тип файла: zip BigUnsigned.zip (11.5 Кб, 6 просмотров)
Тип файла: zip bigint.zip (3.2 Кб, 9 просмотров)
1
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
08.06.2024, 22:23
Цитата Сообщение от gunslinger Посмотреть сообщение
Можно посмотреть, как раньше люди подобное делали.
Сделано, кстати, ровно так, как я написал в #93 (и как показывал в примерах ранее по теме).
Основная функциональность в методах, чуть-чуть в friend, где оно нужно, и россыпь свободных inline-функций.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6339 / 3073 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
08.06.2024, 22:53  [ТС]
gunslinger, кстати, я вот сейчас тоже разделил на файл имплементации cpp и на h файл. Выглядит очень похоже с твоим найденным кодом
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6339 / 3073 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
08.06.2024, 23:44  [ТС]
При желании все получится, даже если ты не эксперт



0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6339 / 3073 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
08.06.2024, 23:52  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Все беды начались от непонятной аллергии на a.ADD(b,c)
эта проблема тоже решена

объект класса не может теперь вызвать мат. функции, как я этого и хотел

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2024, 23:52

Дан файл целых чисел. Подсчитать сумму чисел, больших числа N
program p1; var fx:text; s,k,n:real; c:integer; begin assign(fx,'C:\Users\Пользователь\Documents\аипас.txt'); reset (fx); ...

В массиве целых чисел подсчитать количество нечётных положительных чисел, больших 50
В массиве целых чисел подсчитать количество нечётных положительных чисел, больших 50. Вывести массив, сами числа и их количество. Если...

Найти сумму целых чисел положительных чисел, больших 20, меньших 100 и кратных 3
Найти сумму целых чисел положительных чисел, больших 20, меньших 100 и кратных 3.

Сравнить функции(рекурсивную и итерационную) по скорости выполнения для больших чисел
Вот мой код вычисления Факториала. а как посчитать время выполнения?Функции timeGetTime и GetTickCount и как их применить? ...

Для последовательности целых, оканчивающейся "8", определить число чисел, больших первого введенного числа
Помогите, пожалуйста, с заданием. Для последовательности целых чисел, оканчивающихся числом 8, определить количество чисел, больших...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru