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
4589
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
2092
Минск, Беларусь
Бодигрим в сообщении #239271 писал(а):
Да, есть еще такая штука, как решето Аткина-Бернштейна (2003).
http://cr.yp.to/primegen.html

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

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



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

Сейчас этот форум просматривают: YandexBot [bot]


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

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