Как быстро посчитать M! mod N?

Тема в разделе "WASM.A&O", создана пользователем UbIvItS, 16 май 2007.

  1. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    В одном месте прочитал, что есть быстрый алгос нахождения факториала скажите, пожалуйста, как он выглядит.
     
  2. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    Гамма функция Эйлера
     
  3. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    ECk, сэнкс.

    Вообще, мне интересен даже не факториал как такавой, а M! mod N вот как енту вещь считать быстро я и думаю.
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    UbIvItS
    Но тут факториал вычислять и не нужно.
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ээ а зачем вычислять весь факториал, чтобы предсказать остаток от деления?
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    если m>q, то gcd(m! mod N, N)>1 ----> это очевидно, а вот алгос скоростного подсчёта очевиден далеко не так:)), впрочем, я не удивлюсь, если его нет. тот, что я знаю имеет оценку O(M) - это полная фигня.
     
  7. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    M! mod N начиная с некоторого, довольно небольшого, M будет равно нулю (с какого именно, зависит от разложения числа N на простые множители). Так что если N не меняется, то можно предвычислить все в таблицу. Но если M и N у тебя порядка 10^100, то тогда не знаю.
     
  8. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159
    Вообще говоря, сильно ускорить вычисление M! mod N при M<N в общем случае не получится.
    Если бы это можно было сделать, то было бы можно сломать RSA:
    Пусть N=p*q - произведение неизвестных нам простых чисел, для определенности положим p<q. Тогда p<[sqrt(N)]<q и, следовательно, НОД([sqrt(N)]! mod N,N)=p дает нам нетривильный делитель N.

    Если же M>=N, то M! mod N просто равен 0. Этот факт можно использовать для такого ускорения:
    Пусть нам известно разложение N на простые, тогда можно вычислить M! по модулю каждой степени простого числа, входящей в разложение N (если эта степень меньше M, то результат равен 0), а потом собрать результаты по китайской теореме об остатках.
     
  9. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    что-то мне подсказывает, что это и было первоначальной целью :)
     
  10. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    UbIvItS
    Путем одновременного умножения и приведения по модулю.
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    crypto
    именно об этом алгосе я и говорил - у него оценка О(M): далеко не уплывешь ----> брут форс, по сравнению с ним, шустрый заяц:))

    -------------------------------------------------------------------------------
    Вообще, мне кажиться, что Ферма обладал методикой решения модульных уравнений, а нам достался огрызок - A^phi(N) mod N==1:))
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    UbIvItS
    А здесь речь об RSAшных М, N > 1024 бита?
    или M, N всё таки имеют "математически разумное" значение к примеру M <= 32 или 64 бита?
     
  13. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    Y_Mur

    я о других числах уже и не думаю, тока xxxxxxx...xxx бит - они стали моим проклятьем:)) - хочу знать как раскладывать паршивцев:)
     
  14. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    Ботай решето числового поля, ибо это самый крутой метод. Или ты хочешь ходить как лох и раскладывать числа перебором делителей (и его вариациями)?
     
  15. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    halyavin
    для числа на 1024 бита твоё любимое сито смотрится ещё лоховей, чем брут - форс :)) - так что сакс не предлогать:)): вот, если б ты мне методы Ферма поведал - другое дело:))
     
  16. Solo

    Solo New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    131
    UbIvItS
    из какого носа ты
    выковырял?
     
  17. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    Solo
    он раскладывал большие числа и решал системы урав-ний, какие ты и с компом тарахтеть будешь:)) - вот и вопрос возникает -------->> КАК??!!

    -------------------------------------------------------------------------------------------
    я вот сейчас смотрю на дискрет. логарифм - первое, что пришло в голову по ускорению его расчёта:
    2^t mod N имеет интервалы возрастания и убывания, каждый из них можно довольно быстро вычислить, сложив полученные степени двойки получим искомую степень(например, phi(N)). Но беда в том, что получаемые степени не могут быть > lg2(N), так что это шустрее брута, но для практики не прёт.
     
  18. Solo

    Solo New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    131
    вот с этого места подробней, плиз. Какие числа он раскладывал?
     
  19. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    Solo
    почитай сам - на эту тему много материалов. Поюзай гугл яндекс и. т. д.
     
  20. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    По примеру Диофанта, который оперировал числом, имевшим в длину 245 тысяч знаков, Ферма тоже использовал в своей переписке с математиками большие даже для того времени числа. В какой то период его переписки с математиками последние хотели перестать вести с ним отношения, т.к. думали, что давая в качестве примеров большие числа он хочет подшутить над ними, т.к. на первый взгляд его невозможно проверить (он доказал обратное).
    При этом, он не имел калькуляторов :)