![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
Нужно переделать этот код в Си, помогите, пожалуйста...
|
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Для этого кода невозможно получить полноценный аналог на С, т.к. в нём нет шаблонов и понятия обобщённого программирования (вариант с кучей макросов не рассматриваю).
В коде активно используются контейнеры, алгоритмы и итераторы STL. Их можно заменить реализовав всё вручную. Поэтому я очень сомневаюсь, что здесь кто-то будет переделывать за тебя всё это. Задавай более конкретные вопросы. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Splendid |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
вот более конкретный вопрос:
Как полученные этим кодом:
простые числа - т.е. последовательость a[i], передать в цикл.... Пробую так дописать - фигня получается:
а нужно, чтобы цикл брал все ненулевые a[i] (т.е. все простые числа) по порядку и делил n на каждое из них, и если все остатки не равны нулю - то выводил бы - It is possibly a prime number |
||||
|
|||||
NoliX |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 5.7.2005 Репутация: 1 Всего: 1 |
Я так понимаю, что требуется проверить, является ли число простым
В данном случае написан код - решето Эратосфена для первых 256 чисел Если требуется проверить, является ли число, N<256 простым то достаточно ввести проверку
Потому что по алгоритму мы вычеркивали все составные числа из нашего массива Если требуется проверить, является ли число, 256<N<66049 (это 257*257) простым то придется действительно делить но все простые числа меньше 256 для нужно исправить
на
хотя вместо i<(n/2) правильно писать i<sqrt(n) (квадратный корень) И вообще такой алгоритм проверки крайне тредоемок на подготовительном уровне, это целесообразно делать, если нужно проверить миилионы чисел. а ради одного числа составлять решено не хорошо, плюс массив не динамический. памяти жрет ненужное количество логичнее в этом случае я думаю сделать так
Это сообщение отредактировал(а) NoliX - 20.8.2008, 14:04 --------------------
Опыт - это учитель, который очень дорого берет за свои уроки |
||||||||
|
|||||||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
в алгоритме нужно заданное число методом тривиального деления проверить на простоту, для этого решетом Эратосфена вычисляются все простые числа до 256 - я так понимаю, что это оптимальная проверка, отсекает все четные и 80% нечетных составных чисел, а потом заданное число поделить на все эти полученные простые....я переписала этот цикл так:
вроде работает....это правильно? |
|||
|
||||
NoliX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 5.7.2005 Репутация: 1 Всего: 1 |
Вы меня не читаете (слушаете)
я уже написал, что нужно написать вот так:
В Вашем коде Вам, может быть, придется делить на заведомо большие проверяемого числа числа, например не нужно делить 5 на 33, и так понятно, что 5 больше чем на 3 не поделится (а это 5/2+1) А по поводу, что не гарантирует правильности результата - это я конечно чушь спорол, ошибка будет только после 66049 Это сообщение отредактировал(а) NoliX - 20.8.2008, 14:03 --------------------
Опыт - это учитель, который очень дорого берет за свои уроки |
|||
|
||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
NoliX, спасибо! Я все поняла!!! Тему можно закрыть
![]() |
|||
|
||||
virtul |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |