Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/476: Рейтинг темы: голосов - 476, средняя оценка - 4.67
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5

Длинная арифметика на Си

12.07.2010, 19:01. Показов 98960. Ответов 44

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане!

Хотелось бы мне начать топик, сообщения в котором я планирую пополнять постоянно (по возможности и уровню занятости, разумеется). Тема топика, как видно из заголовка, длинная арифметика.
Я не хочу подробно описывать, что такое длинная арифметика и зачем она нужна. Об этом любой может прочитать на той же википедии. Но небольшое вступление сделать все таки надо.
В длинной арифметике вычисления производятся над очень большими числами. С точки зрения программирования на языке Си такими числами можно считать любые, которые "не помещаются" в стандартные типы данных, то есть те, которые больше 32-х (64-х) бит. Наиболее популярно применение длинной арифметики, пожалуй, в криптографии.

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

Начальный план действий будет таков:
  • Представление длинных чисел на языке Си
  • Основные математические операции

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

PPS. За "Библию" в этой теме беру второй том из серии "Искусство программирования" Д. Кнута.
16
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2010, 19:01
Ответы с готовыми решениями:

Длинная арифметика
Доброе время суток. Я разбираю длинную арифметику. И есть некоторые вопросы. К примеру возьмем Сложение. int a, b, length, i=0,...

Длинная арифметика
Необходимо реализовать операции сложения, вычитания и умножения двух чисел a и b. Каждое число содержит не более 10000 десятичных знаков,...

Умножение (длинная арифметика)
Работа с массивами из десяти элементов в 12-ричной системе, реализация функции умножения Результатом возвращается число, указанное в...

44
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
24.05.2011, 06:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от fasked Посмотреть сообщение
Не понял о чем это Вы здесь.
О том, что младший в младшем и старший в младшем (младший байт в младшем, то есть меньшем адресе и старший байт в младшем адресе) - это порядки байт, а у тебя имеет место порядок слов, внутри которых уже имеется порядок байт. И если порядок слов противоположен порядку байт, то в четырёхбайтном двойном слове получаем чередующийся порядок 1032 или 2301. Можно ещё накрутить порядок двойных слов совпадающий с порядком байт: 54761032. И так далее. А теперь прикинь, на что будет похож код.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
25.05.2011, 20:47  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
О том, что младший в младшем и старший в младшем (младший байт в младшем, то есть меньшем адресе и старший байт в младшем адресе) - это порядки байт, а у тебя имеет место порядок слов, внутри которых уже имеется порядок байт. И если порядок слов противоположен порядку байт, то в четырёхбайтном двойном слове получаем чередующийся порядок 1032 или 2301. Можно ещё накрутить порядок двойных слов совпадающий с порядком байт: 54761032. И так далее. А теперь прикинь, на что будет похож код.
Ага, это да, вот только один момент, каким боком byte order должен влиять на код?
0
Debilonik
02.12.2012, 12:39
Цитата Сообщение от Vergil111 Посмотреть сообщение
Если интересует, могу подбросить пару идей и функций по поводу модульной арифметики, которая так же очень популярна в криптографии. А так же реализацию некоторых популярных алгоритмов шифрования(Эль-Гамаля, RSA), основанных как раз на модульной арифметике и арифметики длинных чисел. Просто очень интересуюсь всякими шифрами и их взламыванием и готов помочь любому в данной теме))
я понимаю что я некропостер, но все же..

Может у Вас ещё осталась реализация RSA? Поделитесь, пожалуйста
0 / 0 / 0
Регистрация: 12.10.2012
Сообщений: 4
11.12.2012, 22:31
fasked, наткнулся на тему в преддверии написания своего подобного пакета, не абы какого, но по-настоящему хорошего и совместимого со встроенными типами C++. Может невнимательно проглядел сообщения, но есть ли где-нибудь Ваш пакет, оформленный в виде zip архива с исходными кодами. Интересно было бы изучить его перед тем, как написать свой "Hello, World". Ну и предать его некоторой критике по возможности)))

Добавлено через 4 минуты
Да вся проблема RSA как раз в том, чтобы управиться с большими циферами, проще написать его самому, он пишется/отлаживается за пару часов))) В том его прелесть в сравнении с остальными лютыми шифрами))
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
21.07.2013, 16:00
Цитата Сообщение от fasked Посмотреть сообщение
Функция-то может и будет проще выглядеть, но как-то возиться со структурами сложнее имхо будет.
При реализации любой библиотеки надо придерживаться следующего: библиотека должна максимально упрощать жизнь тому, кто этой библиотекой пользоваться. Выбирать реализацию, которая облегчает жизнь автору библиотеки, но усложняет жизнь пользователю, означает, что такая библиотека закончит свою жизнь на кладбище, т.к. конкуренты сделают более удобную библиотеку, которая больше устроит пользователя

Цитата Сообщение от fasked Посмотреть сообщение
REALINT переименован в BIGINT
Я не большой знаток, но вроде бы как термин "big" используют для характеристики физических размеров (типа "большой дом"). А для длинных чисел применяют термин "large"

Цитата Сообщение от fasked Посмотреть сообщение
Как всегда жду критики и комментариев.
Если кому интересно могу описать алгоритм умножения
Не хватает теоретических выкладок. Думаю, они критичны начинающим. Даже для алгоритма сложения, поскольку не всем очевидно про бит переноса. Такие вещи полезно описывать на примере сложения или умножения столбиком на бумажке.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.07.2013, 16:00
Помогаю со студенческими работами здесь

Простая Длинная арифметика
Доброго времени суток! У меня задача. Вводим 3 числа,достаточно больших,чтобы они не помещались в стандартные типы данных. Далее надо...

Длинная арифметика (возведение в степень)
Возведение 2 в степень N. Мой код на СИ. Выдаёт правильный результат, но при выводе добавляется куча мусора, берущаяся невесть откуда....

Длинная арифметика: возведение в степень
Вычислить с помощью алгоритмов длинной арифметики значение числа 3^5000 и представить его в шестнадцатеричной системе счисления. Помогите...

Арифметические действия (длинная арифметика)
Хай програмеры!!!! кто может помогите мне с таким заданием: Написать программу, которая выполняет указанные арифметические действия...

Длинная арифметика: вывести n чисел Фибоначчи
Вывести в консоль n чисел Фибоначчи без переполнения #include <stdio.h> int main() { unsigned long long n = 256, i = 0, j =...


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

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru