![]() |
|
Модераторы: bsa |
![]()
|
|
| max29 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.4.2016 Репутация: нет Всего: нет |
Такая вот задачка: Составить прог-му которая формирует массив элементы которого являются простыми числами не превосходящими заданное натуральное число (n).
К примеру (n=10) то должно напечатать 2,3,5,7,9. Вроде-бы так. Напишите плиз прогу, хочется увидеть и понять как это составляется. А-то у самого не получается. |
|||
|
||||
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Для начала нужно написать функцию, которая определяет является ли переданное ей число простым. Примеров этой функции в интернете полно. Вот один из них.
Далее вы в цикле прибигаете по всем числам до заданного и проверяете является ли число простым. В случае, если это так, просто добавляете его в массив. Пробуйте сделать сами. Будут вопросы - пишите сюда. Добавлено через 1 минуту и 23 секунды А еще, 9 - непростое число, т.к. у него больше 2ух делителей. Это сообщение отредактировал(а) rudolfninja - 1.6.2016, 16:40 |
|||
|
||||
| max29 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.4.2016 Репутация: нет Всего: нет |
Такая вот прога в ней что-то не так работает так как она выдаёт простые вместе с непростыми числа.
|
|||
|
||||
| Tieswar |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 29.5.2016 Где: Томск Репутация: нет Всего: нет |
Почему здесь
проверяется только половина чисел? Должно быть так
По решению: заведи счётчик делителей числа. В конце основного цикла проверяй его на равенство двум (так как у простого числа 2 делителя), и если равен, то выводи число. Это сообщение отредактировал(а) Tieswar - 1.6.2016, 20:23 |
||||
|
|||||
| max29 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.4.2016 Репутация: нет Всего: нет |
Вы бы не могли написать прогу ато у меня вот что вышло:
Просто у меня очень большая ахота посмотреть на готовую версию хочу понять как работает. Это сообщение отредактировал(а) max29 - 1.6.2016, 21:26 |
|||
|
||||
| baldman88 |
|
||||||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Потому, что наименьший делитель 2. В данном случае условие верно:
Добавлено @ 21:55
С такими запросами -- в раздел помощи. Ну а по делу: 1. Вернуть прежнее условие для цикла с переменной i; 2. В шестой строке условие привести к виду
Это сообщение отредактировал(а) baldman88 - 1.6.2016, 21:57 |
||||||||||||||
|
|||||||||||||||
| Tieswar |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 29.5.2016 Где: Томск Репутация: нет Всего: нет |
У меня вот такое решение
Вывод:
...Ну да, я понял, что не оптимально делать со счётчиком делителей. Действительно, так гораздо больше вычислений. Это сообщение отредактировал(а) Tieswar - 1.6.2016, 22:01 |
||||
|
|||||
| baldman88 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
А теперь попробуйте во втором условии (для переменной i2) поставить условие считать до i/2, и cnt проверять на равенство единице. Получите тоже самое, но в два раза меньше итераций. Добавлено через 2 минуты и 56 секунд
Попробуйте сделать так, как я описал выше и получите ту же эффективность. Здесь эффективность ограниченна алгоритмом который использовал ТС. |
||||
|
|||||
| Envy |
|
|||
|
Unregistered |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Вы забыли про условие -
С наличием массива задача упрощается - нужно проверять делимость не на все числа, меньшие тестируемого, а на все простые, меньше тестируемого. И они (сюрприз!) уже сложены в результирующий массив. |
|||
|
||||
| baldman88 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Нет, не забыли. Мы попытались помочь ТСу понять где ошибка в его коде. А вот программу пусть составляет сам. Он уже в течении пары месяцев просит писать программы за него. За это время уже можно было научится писать самостоятельно, и просто задавать вопросы по тому, что не получаестя, а не в наглую выпрашивать чтобы кто-то написал. Ради интереса можете просмотреть все его темы. Еще раз перечитал Ваше сообщение. Если Вы это не помошникам писали, то прошу извинения за резкость. Просто автор очень хитер и коварен, но, увы, ленив. Это сообщение отредактировал(а) baldman88 - 2.6.2016, 12:37 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
| max29 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.4.2016 Репутация: нет Всего: нет |
Всё понятно, если кто-то перетрудился из за моих просьб то прошу меня простить.
Это сообщение отредактировал(а) max29 - 2.6.2016, 20:06 |
|||
|
||||
| baldman88 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Ну вот зачем ерничать? Перечитайте сами свои темы -- Вы не просите, Вы выпрашиваете. Если не секрет, на кого Вы учитесь? |
|||
|
||||
| max29 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.4.2016 Репутация: нет Всего: нет |
Прикладная информатика в экономике.
С++ нам преподавали только 1 курс и не углублённо (мало уроков было) вот я и пытаюсь своими силами как нибудь выучить этот язык. И иногда мне удобнее на готовом примере понять как работает то или иное в С++ так как только лишь теории маловато а своими силами я делаю море ошибок в коде. |
|||
|
||||
![]()
|
| Правила форума "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. |