0 / 0 / 0
Регистрация: 18.08.2011
Сообщений: 3
|
||||||
1 | ||||||
Вывести простые числа в диапазоне от 2 до 100018.08.2011, 04:01. Показов 19750. Ответов 35
Метки решето аткина (Все метки)
Здраствуйте, есть задачка:
Создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000. (Число называется простым, если оно делится только на 1 и на само себя без остатка; причем числа 1 и 2 простыми не считаются). Пробую следующим образом, но выводит все цыфры от 3 до 999 Вот как пробую я:
0
|
18.08.2011, 04:01 | |
Ответы с готовыми решениями:
35
Найти простые числа в диапазоне от 1 до 1000 Перебором делителей найти простые числа в указанном диапазоне, и вывести все простые числа в поле Memo Создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000 Создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000 |
18.08.2011, 23:55 | 21 |
Писал, чтобы решить задачку на одном из сайтов. Правда тогда мне этот метод не понадобился, но исходник вот остался.
Где-то, кстати, читал, что решето Аткина проигрывает решету Эратосфена на практике, хотя по асимптотике должно быть наоборот, но выигрыш заметен только на числах близких к 10^9.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
19.08.2011, 00:53 | 22 |
Ну при прямолинейной реализации да, но решето Аткина, позволяет экономить память, как минимум. Для Эратосфена я не представляю, как уменьшить прожорливость. В английской википедии есть ссылка на довольно неплохо оптимизированную реализацию генератора, выполненную одним из авторов алгоритма (Бернштайн).
1
|
19.08.2011, 02:36 | 23 |
Я, на самом-то деле, понятия не имею, в какой сфере нужны такие простые числа. Я имею в виду, именно диапазоны именно небольших чисел. А генерировать диапазоны больших простых чисел... опять же зачем, да и наверное это утомительно долго
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|||||||||||
19.08.2011, 03:19 | 24 | ||||||||||
Решение в лоб.
1
|
0 / 0 / 0
Регистрация: 18.08.2011
Сообщений: 3
|
||||||
19.08.2011, 03:50 [ТС] | 25 | |||||
спасибо всем за ответы/советы,
но я не могу понять таки почему ошибка в изначальном посте или следующем коде:
Большое спасибо!
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
||||||
19.08.2011, 04:04 | 27 | |||||
Alex P, у тебя получается, что если проверяемое число не делится на какое-нибудь число, то проверяемое — простое. Но на самом деле-то наоборот: если число делится на какое-нибудь (кроме себя и единицы), то оно составное.
1
|
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
|
|||||||||||
19.08.2011, 09:14 | 28 | ||||||||||
Можно на маленькую капельку усовершенствовать алгоритм:
Toshkarik, вы собираетесь вызывать функцию sqrt() для одного и того же значения i столько раз, сколько шагов итерации будет совершено:
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
19.08.2011, 16:36 | 29 |
Я писал на быструю руку, код не компилил. Да, можно определять корень из i всего один раз.
0
|
fasked
|
19.08.2011, 16:41
#30
|
0
|
Toshkarik
|
|||||
20.08.2011, 14:39
#31
|
|||||
Не по теме: Да я серьезно :) В студии бы у меня был другой немного код :) Просто я относительно недавно решал такую же задачу у Дейтлов. Вот переделал и проверил
1
|
Путешественник вселенной
189 / 160 / 119
Регистрация: 01.03.2011
Сообщений: 664
|
||||||
20.08.2011, 16:05 | 32 | |||||
Честно взято из своего самоучителя.
1
|
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
|
|
20.08.2011, 18:11 | 33 |
А теперь попытайтесь данный алгоритм оптимизировать, а то пока он в крайне корявом виде, и вам тренировка.
0
|
Путешественник вселенной
189 / 160 / 119
Регистрация: 01.03.2011
Сообщений: 664
|
|
21.08.2011, 03:15 | 34 |
Olga_, что оптимизировать то? У меня объём знаний языка С++, только на такую программу.
0
|
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
|
|||||||||||
21.08.2011, 20:48 | 35 | ||||||||||
Поскольку алгоритм вы взяли из книги, а алгоритм совсем не оптимальный, то можно вам попытаться его переделать. Сначала посмотрите на этот цикл
1
|
0 / 0 / 0
Регистрация: 18.08.2011
Сообщений: 3
|
|
23.08.2011, 22:10 [ТС] | 36 |
Всем спасибо!
0
|
23.08.2011, 22:10 | |
23.08.2011, 22:10 | |
Помогаю со студенческими работами здесь
36
Вывести простые числа на интервале от 2 до 1000 Вывести на экран все целые числа в диапазоне от 1 до 1000 Вывести числа, заканчивающиеся на 3 или 5, находящиеся в диапазоне от 1 до 1000 Вывести все простые числа в диапазоне от a до b Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |