Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];

Вниз

Алгоритм   Найти похожие ветки 

 
ArtemESC ©   (2005-10-09 15:54) [0]

Доброго времени суток...
Хочу составить эффективный по времени алгоритм
разложения числа на простые самножители,
может есть готовые решения?


 
Джо ©   (2005-10-09 15:54) [1]


> Хочу составить

и

> может есть готовые решения?

как-то не состыковуется, имхо.


 
Anatoly Podgoretsky ©   (2005-10-09 16:03) [2]

Трудновато будет создать новый алгоритм, тут уже все застолблено. Но пусть пробует, может нобелевку получит.


 
DillerXX ©   (2005-10-09 16:04) [3]

http://algolist.manual.ru/maths - тебе туда


 
partizan   (2005-10-09 16:12) [4]

Несуществует такого алгоритма, а
если ты его составиш - сможеш без труда взломать RSA


 
SergP.   (2005-10-09 19:47) [5]


> partizan   (09.10.05 16:12) [4]
> Несуществует такого алгоритма, а
> если ты его составиш - сможеш без труда взломать RSA


Как это не существует?
Может и малоэффективные,но существуют...


 
SergP.   (2005-10-09 20:01) [6]

Например, вот на скорую руку набросал:


procedure searchmull(a:integer);
var
i,max:integer;
begin
max:=trunc(sqrt(a));
for i:=2 to max do
 if (a mod i)=0 then
    begin
      searchmull(a div i);
      searchmull(i);
      exit;
    end;
form1.Memo1.Lines.Add(inttostr(a));
end;


Неэффективный конечно, так как на скорую руку... Но алгоритм.


 
GuAV ©   (2005-10-09 20:46) [7]

http://www.fastcode.dk/fastcodeproject/fastcodeproject/30.htm


 
GuAV ©   (2005-10-09 20:48) [8]

А, не то, сабж невнимательно глянул. Но и эту задачку им можно предложить.


 
partizan   (2005-10-09 20:53) [9]


> Как это не существует?
> Может и малоэффективные,но существуют...


Так я про эффективный говорю. Эффективного не существует


 
SergP.   (2005-10-09 21:01) [10]


> Так я про эффективный говорю. Эффективного не существует


Ну эффективность - это понятие растяжимое...


 
TUser ©   (2005-10-10 11:47) [11]

Слышал, что несколько лет назад был придуман эффективный эвристический алгоритм. Для огромного большинства длинных чисел он быстро выдает правильное решение. Чисел, для которых алгоритм не совсем применим мало (хотя они есть). Так что теперь криптосхемы типа RSA не являются такими надежными, как ранее.


 
pasha_golub ©   (2005-10-10 12:23) [12]

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

Вопрос в том, ограничено ли сверху заданное число (для которого ищем разложение)?


 
pasha_golub ©   (2005-10-10 12:30) [13]

http://algolist.manual.ru/maths/teornum/factor/


 
Holy ©   (2005-10-10 12:39) [14]

<offtop>
Придумав алгоритм в этой ветке нобелевку поровну поделим или пропорциональну числу постов? :)
</offtop>


> А если хранить список простых чисел константно в теле программы,
>  то думаю можно и быстренько находить.


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


 
pasha_golub ©   (2005-10-10 13:15) [15]

Взято из http://algolist.manual.ru/maths/teornum/factor/trial.php :


 Заметки к практической реализации.


    Предположим, что мы используем таблицу простых до 500"000 ( 41"538 простых чисел ). Простое деление при таком ограничении никогда не занимает больше нескольких секунд на современных компьютерах. Причем хранить можно только разности между простыми (или их половины), а не сами числа, так как p[k] - p[k-1] можно поместить в 1 байт вместо четырех, если p[k] <= 1"872"851"947 ( а половину этой разности - если p[k] <= 1"999"066"711"391).

    Кроме того, не нужно делать больше делений после того, как кончится таблица простых, так как есть лучшие методы для удаления малых делителей.

    И, наконец, заметим, что нет необходимости в вычислении L := [ N1/2 ] во время инициализации, так как проверка d >= L в шаге 4 может быть заменена на q <= L, где q - евклидово частное при делении N на d : N = q * d + r, обычно вычисляемое одновременно с остатком в шаге 3.


Вот потому и интересно мне, есть ли верхняя грань для заданного числа?



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.049 c
3-1127245879
highlander
2005-09-20 23:51
2005.10.30
Как настроить DBLookUpCombobox


6-1112328440
TankMan
2005-04-01 08:07
2005.10.30
Пример передачи файла через Socket в режиме stThreadBlocking...


1-1128756784
ShotGun
2005-10-08 11:33
2005.10.30
Как разархивировать программно зип файл?


3-1127348697
Дмитрий Белькевич
2005-09-22 04:24
2005.10.30
4th dimenstion


14-1128591568
konda
2005-10-06 13:39
2005.10.30
Запись в событиях WinXP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский