2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9 ... 46  След.
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 20:46 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Вообще, результат действительно интересный.
Куча близких друг к другу простых чисел, наверное, иногда может потребоваться.
Если это действительно правда и быстро, то желаю удачи

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 20:59 
Аватара пользователя


14/08/09
1140
SerjeyMinsk в сообщении #239232 писал(а):
Вот числа от 11111 в квадрате. Верхние числа программа почему то обрезает. не показывает
В турбопаскале не считает, а во freepascale еще сражается.
Изображение

Так я не понял. Вы вводите число $2n+1$. В каком диапазоне генерируются простые числа?
Зы. Даже простой алгоритм, основанный на переборе простых множителей даёт примерно скорость проверки 1 миллион последовательных чисел/c на первых 20-50 миллионах точно на средних по мощности компьютерах (на моём Селероне 2.0 GHz). Какая скорость у Вас и диапазон, честно говоря, я пока не понимаю.

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 21:11 
Заслуженный участник


27/04/09
28128
Ещё, если у вас в алгоритме не использовалось никаких промежуточных отрицательных чисел, есть вероятность, что они не используются и в программе. Тогда можете ещё в полраза увеличить диапазон, поменяв знаковый тип longint на беззнаковый longword.

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 21:39 
Заблокирован


19/06/09

386
SerjeyMinsk, сравните Ваш алгоритм со следующим http://e-maxx.ru/algo/bpsw.

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 21:45 
Аватара пользователя


07/07/09
346
Минск
arseniiv в сообщении #239244 писал(а):
Ещё, если у вас в алгоритме не использовалось никаких промежуточных отрицательных чисел, есть вероятность, что они не используются и в программе. Тогда можете ещё в полраза увеличить диапазон, поменяв знаковый тип longint на беззнаковый longword.

Вот при попытке увеличить диапазон во
flag:array[1..1000] of longint;
a,b,c,n,y,i,j,k,d,p:longint;

до 10000000000 выдает ошибку вот такую
Изображение

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 21:48 
Заблокирован


19/06/09

386
Цитата:
Вот при попытке увеличить диапазон во
flag:array[1..1000] of longint;
a,b,c,n,y,i,j,k,d,p:longint;

до 10000000000 выдает ошибку вот такую
Изображение

Судя по всему превышен размер массива. Боюсь без программиста советами эту проблему не решить.

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 21:49 
Заслуженный участник
Аватара пользователя


13/08/08
14495
SerjeyMinsk, как только появились реальные результаты, так и интерес появился у всех. Учтите ещё, что воскресенье, да НУГ на носу. Я Вас уверяю, как выложите результаты в окрестности септиллиона, так ажиотаж такой поднимется, что не будете успевать отвечать. А там, глядишь, и нужные люди прознают. А Вы уже человек известный.
Признайтесь, наверняка так и задумано было?

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 21:56 
Заслуженный участник


04/05/09
4587
SerjeyMinsk в сообщении #239250 писал(а):
arseniiv в сообщении #239244 писал(а):
Ещё, если у вас в алгоритме не использовалось никаких промежуточных отрицательных чисел, есть вероятность, что они не используются и в программе. Тогда можете ещё в полраза увеличить диапазон, поменяв знаковый тип longint на беззнаковый longword.

Вот при попытке увеличить диапазон во
flag:array[1..1000] of longint;
a,b,c,n,y,i,j,k,d,p:longint;

до 10000000000 выдает ошибку вот такую
Изображение

Размер всей памяти у вас точно меньше 4Гб, т.е. массив flag не поместится.
Имя переменной flag намекает на то, что элементы flag принимают значения только 0 и 1. Тогда можно поменять тип элементов flag на Boolean, и вместо 0 и 1 использовать значения False и True. Это уменьшит размер памяти, занимаемой массивом flag.

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 22:04 
Аватара пользователя


07/07/09
346
Минск
gris в сообщении #239252 писал(а):
SerjeyMinsk, как только появились реальные результаты, так и интерес появился у всех. Учтите ещё, что воскресенье, да НУГ на носу. Я Вас уверяю, как выложите результаты в окрестности септиллиона, так ажиотаж такой поднимется, что не будете успевать отвечать. А там, глядишь, и нужные люди прознают. А Вы уже человек известный.
Признайтесь, наверняка так и задумано было?


Да не было так задумано. Я просто хочу понять какое практическое применение в криптографии получит этот алгоритм. Если он имеет значение прикладное, то пусть те фирмы которые им будут пользоваться денег дадут. Завтра все будет известно. Встречаюсь с людьми которые единственные проявили интерес к этому. Если ни очем не договариваемся - опубликую, как и обещал. Выхода другого нет просто. Но, поймите и меня тоже. Нет денег совершенно, а еще много чего интересного есть. Вот в первой теме которой я создавал так вообще в институт психиатрии отправляли. Больше и не вернусь к тому-же вопросу. А здесь хоть как-то я смог показать практически, что не дурак я. Ну произошло в жизни такое. Как это кому-то объяснить? Никто не верит.
Я никого не забуду, кто помогал.

-- Вс авг 30, 2009 22:18:44 --

venco в сообщении #239255 писал(а):
Размер всей памяти у вас точно меньше 4Гб, т.е. массив flag не поместится.
Имя переменной flag намекает на то, что элементы flag принимают значения только 0 и 1. Тогда можно поменять тип элементов flag на Boolean, и вместо 0 и 1 использовать значения False и True. Это уменьшит размер памяти, занимаемой массивом flag.

Оперативка у меня 1 гб.
Процессор селерон 1.73
flag на Boolean как менять понял, а вот вместо 0 и 1 использовать значения False и True не могу найти

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 22:21 
Заслуженный участник
Аватара пользователя


13/08/08
14495
Это Вы про пан-геометрию? Меня не было, сейчас только прочитал. И самое интересное, что меня тоже примерно в это время застала страшная гроза, проливной дождь и град. Я с реки через лес шёл. И вот что удивительно - град как сливы, вода, как из ведра, а комарам пофиг. Они летают и зудят и кусаются. Вот как это объяснить. А про пан-геометрию Вашу идейку кажется подхватили. Может и ошибаюсь, но по-моему Вы здорово зевнули. Кстати. Спать пора.

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 22:39 
Аватара пользователя


07/07/09
346
Минск
Вы не могли бы помочь реализовать мне в паскале решето эратосфена. То есть уже готовый файл выложить в PAS формате, чтобы я смог проверить хотя бы наглядно скорость его работы до 3 миллиардов.

Просто нашел в поиске вот это и что-то сомневаюсь, что там верные данные
Изображение

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 23:33 
Заслуженный участник
Аватара пользователя


22/11/06
1096
Одесса, ОНУ ИМЭМ
SerjeyMinsk в сообщении #239265 писал(а):
Просто нашел в поиске вот это и что-то сомневаюсь, что там верные данные

Да, очень странная программа: искать решетом Эратосфена простые числа до миллиона 274 секунды - это надо очень постараться. Оно должно за секунду-другую справляться в крайнем случае.
venco в сообщении #239156 писал(а):
Я на Паскале практически не пишу, так что стандартной функции для получения точного времени не знаю (подозреваю, что её вообще нет). Прошу знатоков предложить стандартный метод.

Есть для неточного. Подключаем sysutils и используем функцию now. Получится примерно следующее (я внес некоторые правки и в прочий код):
Код:
Program primes;

uses Sysutils;

{ Count number of primes up to n using simple sieve of Eratosthenes. }
Function prime_count1(n : longint) : longint;
Type
   TSieve = Array[0..100*1000*1000] of Boolean;
   PSieve = ^TSieve;
Var
   i           : longint;
   j           : longint;
   prime_count : longint;
   prime       : PSieve; { dynamically allocated array for the sieve }
begin
   GetMem(prime, (n+1)*sizeof(Boolean)); { allocate the sieve array }
   FillChar(prime^, (n+1)*sizeof(Boolean), True); { fill it with ones }
   prime_count := 0;
   for i := 2 to n do
   begin
      if prime^[i] then { next prime found }
      begin
         Inc(prime_count);
         { mark all multiplies as non-primes: }
         j := i*2;
         while j <= n do
         begin
            prime^[j] := False;
            Inc(j, i);
         end;
      end;
   end;
   FreeMem(prime, (n+1)*sizeof(Boolean)); { free sieve array }
   prime_count1 := prime_count;
end;

{ run prime counting function and determine its runtime }
Procedure test1(n : longint);
Var
   count : longint;
   time  : Real;
begin
   time := now;
   count := prime_count1(n);
   time := (now - time)*86400;
   WriteLn('Number of primes up to ',n,' - ',count,'   time spent: ',time:0:3,' secs');
end;

begin
   test1(100000);
   test1(1000000);
   test1(10000000);
   test1(100000000);
end.

SerjeyMinsk, берите этот код и сохраняйте. Не как Unicode - как ASCII. И компилируйте FreePascal.

Вот результаты на моей машине:
Код:
Number of primes up to 100000 - 9592   time spent: 0.000 secs
Number of primes up to 1000000 - 78498   time spent: 0.156 secs
Number of primes up to 10000000 - 664579   time spent: 1.875 secs
Number of primes up to 100000000 - 5761455   time spent: 24.703 secs

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

-- 23:47 30.08.2009 --

Да, есть еще такая штука, как решето Аткина-Бернштейна (2003). Авторы утверждают, что с его помощью за 19.6 секунд просеяли все простые до 10^9 на машине с процессором UltraSPARC-I (167 MHz). Впрочем, они писали на Си, а он куда шустрее Pascal при работе с массивами.

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение30.08.2009, 23:57 
Аватара пользователя


07/07/09
346
Минск
Бодигрим в сообщении #239271 писал(а):
SerjeyMinsk, берите этот код и сохраняйте. Не как Unicode - как ASCII. И компилируйте FreePascal.

Подскажите, как компилировать? Это просто открыть в паскале?
Все сделал, но в турбопаскале выдает вот такую ошибку
error 15 file not found (Sysutils.TPU)
Во free паскале тоже, только такое же окно как и в предыдущих ошибках.


Number of primes up to 100000000 - 5761455 time spent: 24.703 secs
Это я так понял 24 секунды как на часах обычных? Не милисекунды?

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение31.08.2009, 00:13 
Заслуженный участник
Аватара пользователя


22/11/06
1096
Одесса, ОНУ ИМЭМ
SerjeyMinsk в сообщении #239277 писал(а):
Подскажите, как компилировать? Это просто открыть в паскале?Все сделал, но в турбопаскале выдает вот такую ошибкуerror 15 file not found (Sysutils.TPU)Во free паскале тоже, только такое же окно как и в предыдущих ошибках.

Увы, за давностью лет не помню, как правильнее проинструктировать TurboPascal. То ли надо заменить "uses sysutils;" на что-то другое, то ли удалить совсем.

А во FreePascal у меня эта программа только что успешно запускалась.
SerjeyMinsk в сообщении #239277 писал(а):
Number of primes up to 100000000 - 5761455 time spent: 24.703 secs
Это я так понял 24 секунды как на часах обычных? Не милисекунды?

Да, обыкновенные секунды.

 Профиль  
                  
 
 Re: Поиск простых чисел
Сообщение31.08.2009, 00:17 
Заслуженный участник
Аватара пользователя


09/02/09
2089
Минск, Беларусь
Бодигрим в сообщении #239271 писал(а):
Да, есть еще такая штука, как решето Аткина-Бернштейна (2003).
http://cr.yp.to/primegen.html

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 682 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9 ... 46  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group