случайный прохожий
2418 / 1631 / 555
Регистрация: 20.07.2013
Сообщений: 4,577
|
|||||||||||
1 | |||||||||||
Тест Люка - Лемера14.05.2015, 02:54. Показов 5274. Ответов 17
Стало немного скучновато, решил разбавить обстановку.
Мат. часть: https://ru.wikipedia.org/wiki/... 1%80%D0%B0 (и далее по ссылкам) Функции (unsigned __int64 можно заменить на unsigned long long и ui64 на ull):
Результаты: при q = 61 По сути остается лишь прикрутить длинную арифметику (как обычно в таких ситуациях). Далее (при наличии квантового компьютера, иначе можно не дождаться) находим простое число, состоящее из 100 000 000+ десятичных цифр, получаем 150 000 баксов, радуемся жизни. P.S.: можно "побаловаться", запустив Prime 95.
1
|
|
14.05.2015, 02:54 | |
Ответы с готовыми решениями:
17
Тест Люка-Лемера для простых чисел СМА BOSCH WOR 16153 OE крючок люка, разбор крышки люка (вертикалка) Сма Beko WML 15085 D, Не видит блокировку люка.., Не видит блокировку люка Генератор вещественных случайных чисел по алгоритму Лемера |
Почетный модератор
![]() 5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|
14.05.2015, 09:08 | 2 |
Отлично. Теперь пишите распределенную систему - каждый киберфорумчанин установит себе по модулю вичислений и в уговоренное время запустит, чтобы посчитать все за пол часика плюс сетевые потери. Пятьдесят процентов гонорара на развитие форума, остальное себе.
![]()
0
|
случайный прохожий
2418 / 1631 / 555
Регистрация: 20.07.2013
Сообщений: 4,577
|
|
14.05.2015, 12:04 [ТС] | 3 |
Так давно уже все придумано: http://www.mersenne.org/ (не зря же я скрин программы приложил).
Видел где-то оценку, что потребуется примерно года 3 (с учетом высокого качества программы и количества участников). Поэтому и упомянул про квантовый компьютер. Ту программу далеко не дурак писал (я тоже вроде не дурак, но до гения мне точно далеко), да и активных участников здесь гораздо меньше набралось бы. Поэтому остается "пускать слюни". Хотя, если с помощью Prime 95 удастся получить результат, то непосредственному участнику какие-то дивиденды полагаются. Но главное - имя его останется в истории, что более ценно (на мой взгляд).
0
|
случайный прохожий
2418 / 1631 / 555
Регистрация: 20.07.2013
Сообщений: 4,577
|
|||||||||||
16.05.2015, 01:23 [ТС] | 4 | ||||||||||
Используя bigint.zip (там всего два файла - cpp и h) отсюда, немного доработал программу.
cpp:
Код
object Form1: TForm1 Left = 0 Top = 0 BorderIcons = [biSystemMenu, biMinimize] BorderStyle = bsSingle Caption = #1058#1077#1089#1090' '#1051#1102#1082#1072' - '#1051#1077#1084#1077#1088#1072 ClientHeight = 305 ClientWidth = 544 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False Position = poScreenCenter PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 16 Top = 40 Width = 17 Height = 39 Caption = '2' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -32 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label2: TLabel Left = 167 Top = 40 Width = 92 Height = 39 Caption = ' - 1 = ' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -32 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object GaugeProgress: TGauge Left = 16 Top = 272 Width = 513 Height = 25 ForeColor = clBlue Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False Progress = 0 end object LabelResult: TLabel Left = 16 Top = 152 Width = 233 Height = 97 Alignment = taCenter AutoSize = False Caption = #1095#1080#1089#1083#1086' '#1089#1086#1089#1090#1072#1074#1085#1086#1077' ('#1087#1088#1086#1094#1077#1089#1089' '#1079#1072#1085#1103#1083' 0 '#1089#1077#1082#1091#1085#1076')' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -27 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False Visible = False WordWrap = True end object LabelHint: TLabel Left = 167 Top = 8 Width = 92 Height = 26 AutoSize = False Caption = #1074#1074#1077#1076#1080#1090#1077' '#1087#1088#1086#1089#1090#1086#1077' '#1095#1080#1089#1083#1086' >2' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False WordWrap = True end object ButtonTest: TButton Left = 16 Top = 96 Width = 233 Height = 33 Caption = #1058' '#1045' '#1057' '#1058 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -21 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False TabOrder = 1 OnClick = ButtonTestClick end object EditPowerQValue: TEdit Left = 48 Top = 8 Width = 113 Height = 47 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -32 Font.Name = 'Tahoma' Font.Style = [] NumbersOnly = True ParentFont = False ParentShowHint = False ShowHint = False TabOrder = 0 OnKeyPress = EditPowerQValueKeyPress end object MemoNumber: TMemo Left = 265 Top = 8 Width = 264 Height = 249 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False ReadOnly = True ScrollBars = ssVertical TabOrder = 2 end end Пример результата для моего старого компа с 4ГБ оперативки Если кому интересно, выкладываю exe (надеюсь, он не будет требовать библиотек; я люблю свой кривой билдер). При желании можете попробовать протестировать.
0
|
случайный прохожий
2418 / 1631 / 555
Регистрация: 20.07.2013
Сообщений: 4,577
|
|
16.05.2015, 03:55 [ТС] | 5 |
P.S.: ссылка на источник в начала предыдущего поста должна быть такая http://sources.codenet.ru/down... igint.html.
И вот еще пара результатов: получен за полчаса получен за почти 1 час 37 минут простое число: Код
259117086013202627776246767922441530941818887553125427303974923161874019266586362086201209516800483406550695241733194177441689509238807017410377709597512042313066624082916353517952311186154862265604547691127595848775610568757931191017711408826252153849035830401185072116424747461823031471398340229288074545677907941037288235820705892351068433882986888616658650280927692080339605869308790500409503709875902119018371991620994002568935113136548829739112656797303241986517250116412703509705427773477972349821676443446668383119322540099648994051790241624056519054483690809616061625743042361721863339415852426431208737266591962061753535748892894599629195183082621860853400937932839420261866586142503251450773096274235376822938649407127700846077124211823080804139298087057504713825264571448379371125032081826126566649084251699453951887789613650248405739378594599444335231188280123660406262468609212150349937584782292237144339628858485938215738821232393687046160677362909315071
1
|
случайный прохожий
2418 / 1631 / 555
Регистрация: 20.07.2013
Сообщений: 4,577
|
|||||||||||
17.05.2015, 16:25 [ТС] | 6 | ||||||||||
Немного "оптимизировал" программу. Заменил возведение в степень умножением в цикле (в принципе то же самое, но результат улучшился), отказался от функции mod в пользу вычисления остатка от деления "напрямую" (меньше операций, так как степень числа L в тесте постоянна и равна 2).
Скорость работы уменьшилась примерно в 2 раза. cpp:
При 6-значной (216091) степени программа (долго, но) отрабатывает.
1
|
случайный прохожий
2418 / 1631 / 555
Регистрация: 20.07.2013
Сообщений: 4,577
|
||||||
19.05.2015, 03:30 [ТС] | 7 | |||||
Заметил интересный момент.
Результаты, конечно, будут ошибочные, но сам факт... То есть умножение и получение остатка от деления происходят быстрее, чем "простейшая" операция. Третий тест на скрине отрабатывает уже много часов, дождаться не получится. P.S.: постараюсь далее тему не поднимать "по всякой ерунде", пока не появится что-то стоящее (если появится).
1
|
Почетный модератор
![]() 5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|
19.05.2015, 09:31 | 8 |
Если убрать одну операцию, то их просто станет меньше, то есть меньше вычислений надо будет произвести. Следовательно конечно общая скорость вычисления возрастет. Или в чем заключалась шутка юмора?
На самом деле невероятно трудно сравнить скорость работы двух кусков кода. Надо досконально знать устройство своего компилятора. Как именно он оптимизирует вычисления. И отсюда так же следует, что на другой машине, с тем же компилятором, но другим процессором, результаты могут опять отличаться от замеренных. Тут куча тонкостей. Лично я б не взялся утверждать вот вами сказанное.
0
|
случайный прохожий
2418 / 1631 / 555
Регистрация: 20.07.2013
Сообщений: 4,577
|
|
19.05.2015, 13:53 [ТС] | 9 |
Простые факты.
Пример (все ниже сказанное относится к реализации длинной арифметики): я заменил возведение в степень умножением в цикле, скорость возросла - значит, функция pow далеко не оптимальна. Я заменил умножение при вычислении L сложением в цикле, скорость упала катастрофически. Дело не в компиляторе, реализация сложения / вычитания сделана (не скажу "криво") если не плохо, то весьма не идеально. Вывод: умножение / деление работают гораздо лучше сложения / вычитания. Добавлено через 8 минут Повторюсь: А остаются еще умножение и деление с остатком. Тут не нужно быть Шерлоком Холмсом, чтобы сделать выводы.
0
|
D1973
|
19.05.2015, 14:12
#10
|
Не по теме: Вот это и называется: "Программисты балуются" :D
0
|
случайный прохожий
2418 / 1631 / 555
Регистрация: 20.07.2013
Сообщений: 4,577
|
|
28.05.2015, 18:58 [ТС] | 12 |
Я в курсе про нормальные реализации, но не хотелось возиться, прикручивая кучу всего не особо нужного в довесок.
Цель была "протестировать", глобальные планы выполнять не собирался.
0
|
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 3
|
|
03.04.2021, 15:34 | 14 |
Автору за рабочую реализацию респект!
Не считаю себя сильно выдающимся программистом, однако моя строго последовательная реализация теста на C# при работе на процессоре Intel Core i7-4770 3.4 ГГц проверяет число 22203-1 примерно в 5400 раз быстрее: 111 мс против 599465 мс! Сам я дошёл до проверки числа Мерсенна 223209-1, что выполнилось на этом же компе за 103055 мс, а после стало ждать неохота. Сколько это будет проверяться на реализации gunslinger, боюсь предположить ![]()
0
|
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 3
|
|
03.04.2021, 19:54 | 16 |
Быстрее, чем реализация, исполняемый файл который здесь выложен выше, ясен пень!
0
|
Почетный модератор
![]() 5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|
05.04.2021, 09:58 | 18 |
Выкиньте у себя из оконного приложения (с не виснущим интерфейсом во время расчетов) методы, принадлежащие фреймворку, и сразитесь по честному.
P.S. А вообще тут не ради скорости все задумывалось изначально, а ради того, чтобы руками пощупать алгоритм.
1
|
05.04.2021, 09:58 | |
Помогаю со студенческими работами здесь
18
Тест (Тест->Создать тест.->Модульный тест.)
СМА AEG 41030 913729401 вход в тест, Стиралка не включается , в тест не входит Найти глубину люка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |