![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| obsidium |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
Привет всем программистам этого форума.
Вот такая проблема: Решаю задачу нахождения простых чисел из диапозона от 2..n. Причем,нужно считать два числа из файла и найти все простые числа. Т.е. Input: 2 15 Output: 2 3 5 7 11 13 Input: 23 Output: 23 Вот код:
program eratosphen; {$APPTYPE CONSOLE} uses SysUtils; type MyArray=Array of LongBool; var a:MyArray; m,n:Longword; i,j,t:Longword; t1,t2:Text; begin assign(t1,'input.txt'); reset(t1); assign(t2,'output.txt'); rewrite(t2); read(t1,m,n); if n=0 then begin if (m div m=1) and (m mod 2<>0) then write(t2,m); end; SetLength(a,n); //for i:=0 to n-1 do //a[i]:=not a[i]; //FillChar(a,sizeof(a),n); t:=round(sqrt(n)); for i:=m to t do {if A[i] then} begin j:=i*i; while j<=n do begin A[j]:=true; j:=j+i; end; end; for i:=m to n do if a[i]=false then write(t2,i,' '); close(t1); close(t2); halt(0); end. Проблема в том,что при диапозоне 2..2147483647 вылетает с ошибкой.Не считает. Алгоритм взял из wikipedia.В нем есть FillChar(a,sizeof(a),n).Я так понял,что эта функция позволяет не проверять выход за диапозон,но в моем случае она просто не работает. Буду всем признателен в оказанной помощи. Присоединённый файл ( Кол-во скачиваний: 5 )
eratosphen.dpr 0,68 Kb |
|||
|
||||
| Xenag |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 51 Регистрация: 6.3.2010 Репутация: нет Всего: нет |
Конечно не считает.
2147483647 LongBool - это 8Гб оперативки. А больше двух тебе никто не даст. Добавлено через 2 минуты и 22 секунды FillChar просто зануляет твой массив. В принципе, если заменить LongBool на byte, то как раз 2147483647 в 2 Гб поместится. Только потребуется проверять не на true, а на 1. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |