Задачка, из простых чисел сделать простые кошельки. ЯваСкрипт.
Объясняю задачку:
Простое число - это натуральное число больше 1, у которого есть всего два делителя: единица и само число.
Человек задаёт в окошечко число и получает список из дальнейших 20 простых чисел, либо предшествующих:
Пока я нашел только такой простенький скрипт, допустим до сотки, выдаёт 2, 3, 5, 7, 11, 13, 17, 19, 23, итд...
тогда нужно будет дополнить строку до 64 символов нулями либо спереди либо сзади: https://7495.org/igra/prime1.htm
var a = '123';
console.log(a.padEnd(64, '0'));
console.log(a.padStart(64, '0'));
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Prime Number Checker - Online Primality Tester/Calculator</title><style>html, body {height: 100%;}html {display: table;margin: auto;}body {display: table-cell;vertical-align: middle;}</style><script>function fanta() {let rez = one.elements.number.value;nextPrime:for (let i = 2; i <= rez; i++) {console.log(`i = ${i} `);for (let j = 2; j < i; j++) {console.log(`${i} ${j} ${i % j}`);if (i % j == 0) continue nextPrime;}document.getElementById("result").insertAdjacentHTML("beforeend", i + "<br>");}}</script></head><body><h1>Генерация и проверка простых чисел</h1><form id="one"><input type="text" name="number"><input type="button" onClick="fanta()" value="Жми"></form><p id='result'></p></body></html>
Как-то у тебя в задаче слишком много информации, которая нахрен не нужна :)
Если вопрос в том как:
дополнить строку до 64 символов нулями либо спереди либо сзади
То тебе нужно
padStart() или padEnd()
Если нужно что-то другое, то переформулируй задачу :)
Если нужно что-то другое, то переформулируй задачу :)
ну так padStart() и padEnd() я уже обозначил в первом посте. Надо было вписать в мой пример чтобы добавка строки заработала,
у меня не получалось, потому-что эти функции оказывается не работают с "нумберами", надо было перевести сначала в "стринги".
Сам сейчас справился: https://7495.org/igra/prime1.htm
var num = i;var str = num.toString();str = str.padStart(64, '0');
далее, на первых порах высчитывать простые числа легко, но чем больше число тем больше вычислений, компьютер зависает!
а хотелось бы не с самого начала пересчитывать, а задавать начальное число, а тебе выдаёт 20 следующих простых чисел.
Самым серьезным вызовом для практического применения является сложность нахождения всех простых множителей числа. Если взять число 15, можно быстро определить, что 15=5×3. Но если взять 1000-значное число, вычисление всех его простых множителей займет больше миллиарда лет даже у самого мощного суперкомпьютера в мире. На сложности таких вычислений основаны многие алгоритмы защиты данных, поэтому для безопасности коммуникации важно знать, что никто не придумает быстрый способ находить простые множители у больших чисел.https://postnauka.org/longreads/155310
далее, на первых порах высчитывать простые числа легко, но чем больше число тем больше вычислений, компьютер зависает!
а хотелось бы не с самого начала пересчитывать, а задавать начальное число, а тебе выдаёт 20 следующих простых чисел.
Тут возникает вопрос разумности :)
Если тебе достаточно первые Х миллионов простых чисел, то я бы не парился бы, а просто сгенерировал бы их все и загнал бы в БД :) Если тебе нужно все простые числа в пределах 64 разрядов, то надо изучать существующие алгоритмы и придумывать как использовать БД :)
Х миллионов простых чисел, то я бы не парился бы, а просто сгенерировал бы их все и загнал бы в БД
Мне нужны числа 64 знака, от 111....000 до 999...999, поэтому это не миллионы, а гораздо больше,
во-вторых никаких баз - просто статичный хтмл и немного яваскрипта, чтоб вычиталось на лету.
я уже видел в интернетах примеры на маленькие числа, использовал проверку на большие - тут...
вычисление всех его простых множителей займет больше миллиарда лет даже у самого мощного суперкомпьютера в мире. На сложности таких вычислений основаны многие алгоритмы защиты данных, поэтому для безопасности коммуникации важно знать, что никто не придумает быстрый способ находить простые множители у больших чисел.
ну какие тысячи лет, я картинку с первого поста минут за 5 от руки рассчитал, это соседние простые числа.
карочи, в середине есть ссылки, сама идея - делать кошельки чтобы в них хранить все свои сбережения!
https://7495.org/ru/prime-number-40110.htm
Prime Number Checker - Online Primality Tester/Calculator - Prime.htm
Ethereum Private Key Converter - Converter.htm
за исключением первого числа (они не простые, а составные), а дальше идут по порядку простые, так вот надо встроить этот алгоритм, красивенько!
и что мешает?
Ничего не мешает, мне просто знаний не хватает, я не программист, не знаю как библиотеки в код имплементировать.
А программисты, как правило ленивые ребята и не хотят воплощать идею в жизнь! Скоро всех их заменит ChatGPT!
ну какие тысячи лет
Если бы кто-то мог прочитать всё - "Но если взять 1000-значное число..."
У вас же всего 64
https://www.tutorialspoint.com/java/math/biginteger_isprob...
ну какие тысячи лет, я картинку с первого поста минут за 5 от руки рассчитал, это соседние простые числа.
так если от руки, расскажи или опубликуй здесь, пожалуйста, жаваскриптный алгоритм, как ты проверял на простоту числа с 213 битов и более. Я вот от руки не могу, у меня довольно не тормознутая рабочая станция одну проверку одного числа за десятки минут делает, но я не сильно спец в длинной целочисленной арифметике, поэтому у тебя хотел бы поучиться. Только без абстарктных ссылок, что взял оттуда и все... Раз сказал, что ты сам посчитал, так и расскажи как делал.
Меня решил потролить сам профессор? Вас зацепило моё выражение "от руки"??? А вот не надо вырывать фразы из контекста.
Объясняю, была раньше такая задача, получить площадь под интегралом, люди сидели часами считали квадратики, но уголков скошенных много,
а кто-то догадался использовать следующий метод - вырезал кривую и зная плотность бумаги, взвесив на сверхточных весах, получил результат.
Теперь, при возможностях современных инженерных калькуляторов, а тем более компьютеров - высчитать площадь интеграла дело пары минут.
И когда сейчас ктото говорит "миллиарды лет" "столетия" "неделями" - а в ответ это я на калькуляторе ручками за пару минут - чему удивляться?
******************
Возвращаемся к нашим простым числам, можно сидеть и сутками пересчитывать делители, а можно в обход - использовать алгоритмы, калькулятор.
смотрим на википедии:
решето Эратосфена
решето Сундарама
решето Аткина
тест Миллера - Рабина
Тест Пепина для чисел Ферма
Теорема Прота для чисел Прота
Тест Агравала - Каяла - Саксены,
Тест Люка - Лемера - Ризеля
Теорема Вильсона
Критерий Поклингтона
Тест Миллера
Тест Адлемана - Померанса - Румели, усовершенствованный Коэном и Ленстрой
Тест простоты с использованием эллиптических кривых.
Тест Ферма
Тест Миллера - Рабина
Тест Соловея - Штрассена
Тест Бейли - Померанца - Селфриджа - Уогстаффа
Он имеет в виду что он их лично ручками в поле ввода вставлял и из поля вывода копировал.
Да, я использовал калькулятор на какой-то странице и интернетах, выцепить сам скрипт не получилось, расчёт проходит внутри сервера, выводит только данные: 1 проверка, либо 1 впереди, либо 1 позади.
Мне нужен этот быстрый алгоритм на явасКрипте, для для реальных простых 20 чисел, как в примере в первом посте, на 64 знака, без добавления нулей.
Возвращаемся к нашим простым числам, можно сидеть и сутками пересчитывать делители, а можно в обход - использовать алгоритмы, калькулятор.смотрим на википедии:
я более-менее в курсе того, что вы привели ниже, даже что-то программировал и представляю как это делать. А вот вы хотя бы арифметическую сложность для этих всех алгоритмов для ваших 200+ битных чисел сформулировать-то можете? Или опять трындите, что де дайте мне жаваскриптину, чтобы это все делать... Так прочитайте сами в википедии, поймите, и все у вас получится, там нет ничего сложного. Правда советую начать с того как числа с длинными целыми складывать и умножать. Как пройдете это, можно дальше ваши ссылки читать.
я более-менее в курсе того, что вы привели ниже, даже что-то программировал и представляю как это делать. А вот вы хотя бы арифметическую сложность для этих всех алгоритмов для ваших 200+ битных чисел сформулировать-то можете? Или опять трындите, что де дайте мне жаваскриптину, чтобы это все делать... Так прочитайте сами в википедии, поймите, и все у вас получится, там нет ничего сложного. Правда советую начать с того как числа с длинными целыми складывать и умножать. Как пройдете это, можно дальше ваши ссылки читать.
Я не программировал, не знаю как это делать, не представляю всей арифметической сложности и не могу сформулировать алгоритм. Знаний не хватает. Точка.
Да, я опять трындю, дайте мне готовый ЯваСкрипт. Техническое задание я обозначил, цели поставлены, осталось дело за малым, решить саму задачку.
Кстати, Вы с гордостью рассказываете как приложили немало усилий чтобы отчислить почти 230 студентов, из-за таких как Вы моя страна каждый год недополучает тысячи инженеров, математиков, программистов. Мы завозим "Индер штатт Киндер", вот и получаем что имеем, простую математическую задачку некому решить! И вот что я хочу сказать Вам, Василий, Вы меня огорчаете!