![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.09.2010
Сообщений: 31
|
![]()
Здравствуйте, помогите пожалуйста.
Задача: " найти простые числа в диапазоне м н" вот мой код: Код:
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 458
|
![]()
И в чем проблема кода ? Вроде как все должно работать !
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
![]() |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.09.2010
Сообщений: 31
|
![]()
не проходит по времени.
если вводить большой диапазон, не успевает обработать за 2секунды |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 19.12.2010
Сообщений: 52
|
![]()
Ваш алгоритм работает за время O(l^2) т.к. самыми долгими являются вложенные циклы по i и j от 1 до l. Это = O([n/2]^2) = O(n^2)
Есть более быстрый алгоритм за O(l*sqrt(n)) = O([n/2]*sqrt(n)) = O(n*sqrt(n)): Код:
для того, чтобы число x было простым, достаточно чтобы оно не делилось нацело на все простые числа от 2 до sqrt(x). Т.к. если x - не простое, то оно представимо в виде x = a*b, где a <= b (иначе поменяем а и b местами), откуда a <= sqrt(x). Плюс от 2 до корня перебирать достаточно простые т.к. если число не простое, то оно делится на простое, меньшее его.
AllSuccess1.ru - каталог полезных курсов.
Последний раз редактировалось Tony Parker; 19.12.2010 в 04:52. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 05.09.2010
Сообщений: 31
|
![]()
Tony Parker,твоя программа вообще не ищет простые числа
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
думаю, что тут надо применять решето Эратосфена...
кстати, а такое решение "в лоб" не проходит по времени? Код:
|
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 05.09.2010
Сообщений: 31
|
![]() Цитата:
вообще-то моё решение было именно "решетом эратосфена", но видемо из-за вложеного цикла оно не проходит по времени. вот я и спрашиваю более быструю реализацию алгоритма |
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 05.09.2010
Сообщений: 31
|
![]()
??????????
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,544
|
![]()
Суть "решета Эратосфена" заключается в отказе от операций деления (в т.ч. и mod), всяческих проверок(кроме границ массива) и использовании быстрого прохода по массиву с заданным приращением индекса.
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 21.12.2010 в 10:03. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 19.12.2010
Сообщений: 52
|
![]()
2 RAVAL(c)
Fixed. Всё ищет. Зацениваем: Код:
AllSuccess1.ru - каталог полезных курсов.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
простые числа | Koko Shanel' | Помощь студентам | 2 | 08.09.2010 01:13 |
Простые числа | Verochka | Помощь студентам | 14 | 02.12.2008 20:30 |
Простые числа | werser | Помощь студентам | 8 | 18.06.2008 07:24 |
простые числа | Акашаев Нурлан | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 05.12.2007 12:23 |