Deutsch

Задачка, из простых чисел сделать простые кошельки. ЯваСкрипт.

1509  1 2 3 все
7495 старожил05.02.24 23:42
7495
05.02.24 23:42 

Объясняю задачку:


Простое число - это натуральное число больше 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>



Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#1 
Программист коренной житель06.02.24 08:40
NEW 06.02.24 08:40 
в ответ 7495 05.02.24 23:42

Как-то у тебя в задаче слишком много информации, которая нахрен не нужна :)


Если вопрос в том как:

дополнить строку до 64 символов нулями либо спереди либо сзади

То тебе нужно

padStart() или padEnd()


Если нужно что-то другое, то переформулируй задачу :)

#2 
7495 старожил06.02.24 12:23
7495
NEW 06.02.24 12:23 
в ответ Программист 06.02.24 08:40
Если нужно что-то другое, то переформулируй задачу :)

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

у меня не получалось, потому-что эти функции оказывается не работают с "нумберами", надо было перевести сначала в "стринги".


Сам сейчас справился: https://7495.org/igra/prime1.htm


var num = i;
var str = num.toString();
str = str.padStart(64, '0');

далее, на первых порах высчитывать простые числа легко, но чем больше число тем больше вычислений, компьютер зависает!

а хотелось бы не с самого начала пересчитывать, а задавать начальное число, а тебе выдаёт 20 следующих простых чисел.

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#3 
AlexNek патриот06.02.24 18:49
AlexNek
NEW 06.02.24 18:49 
в ответ 7495 06.02.24 12:23
Самым серьезным вызовом для практического применения является сложность нахождения всех простых множителей числа. Если взять число 15, можно быстро определить, что 15=5×3. Но если взять 1000-значное число, вычисление всех его простых множителей займет больше миллиарда лет даже у самого мощного суперкомпьютера в мире. На сложности таких вычислений основаны многие алгоритмы защиты данных, поэтому для безопасности коммуникации важно знать, что никто не придумает быстрый способ находить простые множители у больших чисел.
https://postnauka.org/longreads/155310
#4 
Отпускник завсегдатай06.02.24 19:55
NEW 06.02.24 19:55 
в ответ 7495 06.02.24 12:23
а хотелось бы не с самого начала пересчитывать, а задавать начальное число, а тебе выдаёт 20 следующих простых чисел.

и что мешает?

#5 
Программист коренной житель07.02.24 08:44
NEW 07.02.24 08:44 
в ответ 7495 06.02.24 12:23
далее, на первых порах высчитывать простые числа легко, но чем больше число тем больше вычислений, компьютер зависает!
а хотелось бы не с самого начала пересчитывать, а задавать начальное число, а тебе выдаёт 20 следующих простых чисел.

Тут возникает вопрос разумности :)

Если тебе достаточно первые Х миллионов простых чисел, то я бы не парился бы, а просто сгенерировал бы их все и загнал бы в БД :) Если тебе нужно все простые числа в пределах 64 разрядов, то надо изучать существующие алгоритмы и придумывать как использовать БД :)

#6 
MrSanders коренной житель07.02.24 13:05
NEW 07.02.24 13:05 
в ответ Программист 07.02.24 08:44

Можно изобрести велосипед, а можно найти библиотеку. Ищем что-то вроде Prime64. Ну или ручками как его... Миллер-Ра... Блин. надо посмотреть. Миллер-Рабин, да. Читаем и имплементируем :)

#7 
7495 старожил07.02.24 14:35
7495
NEW 07.02.24 14:35 
в ответ Программист 07.02.24 08:44
Х миллионов простых чисел, то я бы не парился бы, а просто сгенерировал бы их все и загнал бы в БД


Мне нужны числа 64 знака, от 111....000 до 999...999, поэтому это не миллионы, а гораздо больше,


во-вторых никаких баз - просто статичный хтмл и немного яваскрипта, чтоб вычиталось на лету.


я уже видел в интернетах примеры на маленькие числа, использовал проверку на большие - тут...

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#8 
7495 старожил07.02.24 14:42
7495
NEW 07.02.24 14:42 
в ответ AlexNek 06.02.24 18:49
вычисление всех его простых множителей займет больше миллиарда лет даже у самого мощного суперкомпьютера в мире. На сложности таких вычислений основаны многие алгоритмы защиты данных, поэтому для безопасности коммуникации важно знать, что никто не придумает быстрый способ находить простые множители у больших чисел.


ну какие тысячи лет, я картинку с первого поста минут за 5 от руки рассчитал, это соседние простые числа.

карочи, в середине есть ссылки, сама идея - делать кошельки чтобы в них хранить все свои сбережения!


https://7495.org/ru/prime-number-40110.htm


Prime Number Checker - Online Primality Tester/Calculator - Prime.htm

Ethereum Private Key Converter - Converter.htm




за исключением первого числа (они не простые, а составные), а дальше идут по порядку простые, так вот надо встроить этот алгоритм, красивенько!

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#9 
7495 старожил07.02.24 14:52
7495
NEW 07.02.24 14:52 
в ответ Отпускник 06.02.24 19:55
и что мешает?


Ничего не мешает, мне просто знаний не хватает, я не программист, не знаю как библиотеки в код имплементировать.


А программисты, как правило ленивые ребята и не хотят воплощать идею в жизнь! Скоро всех их заменит ChatGPT! зло

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#10 
Бесконечный цикл постоялец07.02.24 15:57
NEW 07.02.24 15:57 
в ответ 7495 07.02.24 14:52

А числа Фибоначи не подойдут? Генерировать легче, а выглядят точно так же. Проверять никто не будет. Это же рынок, тут нужен гибкий подход.


#11 
AlexNek патриот07.02.24 18:01
AlexNek
NEW 07.02.24 18:01 
в ответ 7495 07.02.24 14:42
ну какие тысячи лет

Если бы кто-то мог прочитать всё - "Но если взять 1000-значное число..."

У вас же всего 64

https://www.tutorialspoint.com/java/math/biginteger_isprob...

#12 
Отпускник завсегдатай07.02.24 23:06
NEW 07.02.24 23:06 
в ответ 7495 07.02.24 14:52
Ничего не мешает, мне просто знаний не хватает, я не программист, не знаю как библиотеки в код имплементировать

Тут нужно мозги включать. Программист ты или нет - не важно.

#13 
wasja-de знакомое лицо08.02.24 14:15
NEW 08.02.24 14:15 
в ответ 7495 07.02.24 14:42
ну какие тысячи лет, я картинку с первого поста минут за 5 от руки рассчитал, это соседние простые числа.


так если от руки, расскажи или опубликуй здесь, пожалуйста, жаваскриптный алгоритм, как ты проверял на простоту числа с 213 битов и более. Я вот от руки не могу, у меня довольно не тормознутая рабочая станция одну проверку одного числа за десятки минут делает, но я не сильно спец в длинной целочисленной арифметике, поэтому у тебя хотел бы поучиться. Только без абстарктных ссылок, что взял оттуда и все... Раз сказал, что ты сам посчитал, так и расскажи как делал.

#14 
MrSanders коренной житель09.02.24 10:21
NEW 09.02.24 10:21 
в ответ wasja-de 08.02.24 14:15, Последний раз изменено 09.02.24 10:22 (MrSanders)

Он имеет в виду что он их лично ручками в поле ввода вставлял и из поля вывода копировал. Умаялся человек.

#15 
7495 старожил09.02.24 11:00
7495
NEW 09.02.24 11:00 
в ответ wasja-de 08.02.24 14:15

Меня решил потролить сам профессор? Вас зацепило моё выражение "от руки"??? А вот не надо вырывать фразы из контекста.


Объясняю, была раньше такая задача, получить площадь под интегралом, люди сидели часами считали квадратики, но уголков скошенных много,

а кто-то догадался использовать следующий метод - вырезал кривую и зная плотность бумаги, взвесив на сверхточных весах, получил результат.

Теперь, при возможностях современных инженерных калькуляторов, а тем более компьютеров - высчитать площадь интеграла дело пары минут.


И когда сейчас ктото говорит "миллиарды лет" "столетия" "неделями" - а в ответ это я на калькуляторе ручками за пару минут - чему удивляться?


******************


Возвращаемся к нашим простым числам, можно сидеть и сутками пересчитывать делители, а можно в обход - использовать алгоритмы, калькулятор.


смотрим на википедии:


решето Эратосфена

решето Сундарама

решето Аткина

тест Миллера - Рабина


Тест Пепина для чисел Ферма

Теорема Прота для чисел Прота

Тест Агравала - Каяла - Саксены,

Тест Люка - Лемера - Ризеля


Теорема Вильсона

Критерий Поклингтона

Тест Миллера

Тест Адлемана - Померанса - Румели, усовершенствованный Коэном и Ленстрой

Тест простоты с использованием эллиптических кривых.


Тест Ферма

Тест Миллера - Рабина

Тест Соловея - Штрассена

Тест Бейли - Померанца - Селфриджа - Уогстаффа

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#16 
7495 старожил09.02.24 11:05
7495
NEW 09.02.24 11:05 
в ответ MrSanders 09.02.24 10:21
Он имеет в виду что он их лично ручками в поле ввода вставлял и из поля вывода копировал.


Да, я использовал калькулятор на какой-то странице и интернетах, выцепить сам скрипт не получилось, расчёт проходит внутри сервера, выводит только данные: 1 проверка, либо 1 впереди, либо 1 позади.


Мне нужен этот быстрый алгоритм на явасКрипте, для для реальных простых 20 чисел, как в примере в первом посте, на 64 знака, без добавления нулей.

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#17 
Отпускник завсегдатай09.02.24 20:41
NEW 09.02.24 20:41 
в ответ 7495 09.02.24 11:05

так вот и опрашивай этот сервер, горе-программист.

#18 
wasja-de знакомое лицо11.02.24 16:24
NEW 11.02.24 16:24 
в ответ 7495 09.02.24 11:00
Возвращаемся к нашим простым числам, можно сидеть и сутками пересчитывать делители, а можно в обход - использовать алгоритмы, калькулятор.смотрим на википедии:


я более-менее в курсе того, что вы привели ниже, даже что-то программировал и представляю как это делать. А вот вы хотя бы арифметическую сложность для этих всех алгоритмов для ваших 200+ битных чисел сформулировать-то можете? Или опять трындите, что де дайте мне жаваскриптину, чтобы это все делать... Так прочитайте сами в википедии, поймите, и все у вас получится, там нет ничего сложного. Правда советую начать с того как числа с длинными целыми складывать и умножать. Как пройдете это, можно дальше ваши ссылки читать.

#19 
7495 старожил11.02.24 19:11
7495
NEW 11.02.24 19:11 
в ответ wasja-de 11.02.24 16:24
я более-менее в курсе того, что вы привели ниже, даже что-то программировал и представляю как это делать. А вот вы хотя бы арифметическую сложность для этих всех алгоритмов для ваших 200+ битных чисел сформулировать-то можете? Или опять трындите, что де дайте мне жаваскриптину, чтобы это все делать... Так прочитайте сами в википедии, поймите, и все у вас получится, там нет ничего сложного. Правда советую начать с того как числа с длинными целыми складывать и умножать. Как пройдете это, можно дальше ваши ссылки читать.


Я не программировал, не знаю как это делать, не представляю всей арифметической сложности и не могу сформулировать алгоритм. Знаний не хватает. Точка.


Да, я опять трындю, дайте мне готовый ЯваСкрипт. Техническое задание я обозначил, цели поставлены, осталось дело за малым, решить саму задачку.


Кстати, Вы с гордостью рассказываете как приложили немало усилий чтобы отчислить почти 230 студентов, из-за таких как Вы моя страна каждый год недополучает тысячи инженеров, математиков, программистов. Мы завозим "Индер штатт Киндер", вот и получаем что имеем, простую математическую задачку некому решить! И вот что я хочу сказать Вам, Василий, Вы меня огорчаете! зло

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#20 
1 2 3 все