0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 6
|
||||||
1 | ||||||
Удаление незначащих нулей из решета Эратосфена04.10.2013, 02:14. Показов 1146. Ответов 7
Метки нет (Все метки)
Я создал решето Эратосфена (решето простых чисел), но не могу сделать так, что бы в решете остались только простые числа без нулей. Сейчас программа выводит : 0 2 3 0 5 0 7 0 0 0 11 0 13... (где 0 - это бывшие составные числа). Помогите пожалуйста сделать так, чтобы Решето было без 0. Использование решета обязательно. Заранее большое спасибо!
Добавлено через 15 минут вот моя программа на си:
0
|
04.10.2013, 02:14 | |
Ответы с готовыми решениями:
7
Модификация решета эратосфена Игра на основе решета эратосфена Реализовать заданный алгоритм решета Эратосфена Поиск 2х взаимнопростых чисел из решета Эратосфена |
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 6
|
|
04.10.2013, 14:26 [ТС] | 3 |
Это само собой
Но мне нужно чтобы изначально в решете не было нулей, как избавиться от них в корне решета?
0
|
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 6
|
|||||||||||
04.10.2013, 22:52 [ТС] | 5 | ||||||||||
Не совсем; В общем идея задачи состоит в том чтобы с использованием решета Эратосфена найти наибольший простой делитель числа n, которое подается на вход, все бы ничего, но как только на вход программы идет число семи знаков или больше, программа вылетает с ошибкой. Так вот для того, чтобы этого избежать я использую число корень из n, чтобы избежать переполнения. только сейчас не могу понять как избавиться в самом решете от нулей, чтобы на их место поставить следующие простые числа.
Вот моя программа:
Не совсем; В общем идея задачи состоит в том чтобы с использованием решета Эратосфена найти наибольший простой делитель числа n, которое подается на вход, все бы ничего, но как только на вход программы идет число семи знаков или больше, программа вылетает с ошибкой. Так вот для того, чтобы этого избежать я использую число корень из n, чтобы избежать переполнения. только сейчас не могу понять как избавиться в самом решете от нулей, чтобы на их место поставить следующие простые числа. Вот моя программа:
0
|
Диссидент
27709 / 17325 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
||||||
05.10.2013, 00:03 | 6 | |||||
den18374, Могу дать совет. В качестве решета можно использовать байтовый массив. Один байт на 30 чисел. Дело в том, что из каждой тридцатки чисел только ВОСЕМЬ могут быть простыми (1, 7, 11, 13, 17, 19, 23, 29) (не считая первой тридцатки)
А в Байте помещается (вот удача!) ровно 8 битов (на себе проверял ) Экономия памяти - 32-х кратная. Потому что очевидно - проблемы с памятью. Вот здесь
2
|
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 6
|
|
05.10.2013, 00:33 [ТС] | 7 |
Идею я понял, но к сожалению я еще не очень хорошо знаю Си Расскажите пожалуйста как задать этот массив на Си,если, конечно, это не затруднит вас! Заранее спасибо!
0
|
Диссидент
27709 / 17325 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
||||||
05.10.2013, 09:59 | 8 | |||||
Вот набросок программки решета с использованием char-массива
Модифицируй ее под свои нужды.
модифицировать алгоритм. Функцию Jolting можно слегка оптимизировать, чего я делать не стал, тк. нас в первую очередь интересует объем памяти. Так же не стал заморачиваться на проблемах больших чисел и длинной арифметики.
2
|
05.10.2013, 09:59 | |
05.10.2013, 09:59 | |
Помогаю со студенческими работами здесь
8
Поиск простых чисел методом решета Эратосфена. Вывести простые числа от 1 до 1000000 с помощью решета Эратосфена Отбрасывание незначащих нулей Обрезка незначащих нулей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |