Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Теория чисел, ... Ну не понимаю я 
:(
    Опции темы
__vi
Дата 4.2.2004, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 21.1.2004

Репутация: нет
Всего: -1



В мапле есть функции: divisors и tau;
divisors - находит все делители числа.
tau - говорит сколько у числа делителей.
Каков их алгоритм? Ведь это не просто перебор, типа: (n%m == 0) ? print(m):isdiv(n, m+1);
Обе функции работают очень быстро даже с огромными числами 10^96 - за 2 секунды при 400MHz.
PM MAIL   Вверх
acp
Дата 5.2.2004, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 4.2.2003
Где: Владимир

Репутация: нет
Всего: 2



Если бы была известна какая-то математическая функция нахождения делителей, то не искали бы простые числа так долго.
Перебор, скорее всего.
PM WWW ICQ   Вверх
val
Дата 5.2.2004, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Мне кажется, тут используются алгоритмы разложение числа на множители...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
@lex
  Дата 5.2.2004, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 3.2.2004
Где: Москва

Репутация: нет
Всего: нет



хоть и занимаюсь математикой,
но именно с этой проблемой не сталкивался.
Цитата
Перебор, скорее всего

хочу заметить, что даже если используется перебор(что на мой взгляд маловероятно, все таки алгоритмы поиска делителей числа существуют), то достаточно
рассматривать числа
p : {p<=(sqrt(n)+1) && p-простое}
где n - заданное число(делители которого мы ищем)
ведь вполне логичный подход:
если n%k=0 && k=i*j => n%i=0 && n%j=0
такой алгоритм называется решетом Эротосфена.
Цитата
Мне кажется, тут используются алгоритмы разложение числа на множители

а это вроде как и есть поиск всех делителей числа?!
правда, вероятно, когда мы разлогаем число на множители
мы еще считаем кратность каждого делителя.


PM MAIL ICQ   Вверх
maxim1000
Дата 5.2.2004, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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


--------------------
qqq
PM WWW   Вверх
RSA
Дата 19.2.2004, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.2.2004

Репутация: нет
Всего: нет



Действительно, быстрых алгоритмов разложения на множители не существует. Но есть алгоритмы, позволяющие это делать гораздо быстрее, чем решето эратосфена. Конечно, они и более трудные для понимания и обоснования. Например, можно использовать т.н. N+1 и N-1 методы разложения.
PM MAIL   Вверх
Mal Hack
Дата 19.2.2004, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



1. Даже если идет перебор, то он перебирает только до половины числа. Вот уже в два раза сократили.
2. Потом опускаются сразу такие варианты когда делится не будет, например, вы видели, чтоб на *5 делилось число с последней цифрой 1. Э таких случаев - очень много.
3. Помоему в математике была такая фишка, что число делится на 3 если сумма его цифр делится на 3...
Вот тут можно еще выкинуть...
PM ICQ   Вверх
RSA
Дата 19.2.2004, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.2.2004

Репутация: нет
Всего: нет



Это все мелочи. Алгоритмы, применяемые на практике для больших чисел далеко ушли от этих простых методов.
PM MAIL   Вверх
Mal Hack
Дата 19.2.2004, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



RSA, но они основанны на простых методах и во многом их повторят...
PM ICQ   Вверх
Chingachguk
Дата 20.2.2004, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 18



__vi

Я тоже не силен в этой математике. Согласен с рассуждениями RSA. В целом.

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

В последнем случае ты должен прочесть что-то типа: метод такой-то имеет временную сложность порядка 2^n, где n-число бит (например !!!).

Далее ты делаешь такой опыт: подаешь ему на вход числа с разным числом битов (интересно также подать только простые числа - если она сможет сделаь их быстро, это косвенный признак качества). И записываешь время. В результате у тебя будет экспериментальная зависимость времени обсчета от числа бит. Видимо, так можно получить тип алгоритма.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
RSA
Дата 20.2.2004, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.2.2004

Репутация: нет
Всего: нет



С вероятностью 95 процентов Мапл использует вероятностные алгоритмы нахождения делителей, так как они обычно самые быстрые в теории чисел. Поэтому сложность этих алгоритмов может сильно варьироваться.
И у всех таких алгоритмов есть зависимость не только от величины числа, которое мы разлагаем, но больше от величины ее делителей. То есть, число, у которого много небольших делителей разложится на порядок быстрее, чем то, которое есть произведение двух больших простых чисел. Кстати, в для "числа порядка 10^96 за 2 секунды" наверняка имеет место первый случай. Иначе за 2 секунды оно бы не разложилось.
А чтобы понять, как работают такие алгоритмы, нужно для начала освоить пару-другую умных книжек по алгебре и теории чисел. smile.gif
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.