0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 18
|
||||||
1 | ||||||
Выводим ПРОСТЫЕ числа. Ткните, пожалуйста, пальцем в ошибку12.11.2012, 19:22. Показов 1541. Ответов 19
Метки нет (Все метки)
Здравствуйте.
Подскажите. что не так? Задача: Вывести на экран ПРОСТЫЕ ЧИСЛА в указанном диапазоне. Делала так: прохожусь по всем числам и проверяют остаток от деления на числа меньше (i). Для этого добавила встроенный for. А внутри для исключения случаев типа "4" (нацело не делится на 3, а на 2 делится, т.е. остаток от деления =0 ) добавила if Выводит все подряд.. подозреваю break не так как-то работает... уже и через while делала. Покажите, пожалуйста, в чем здесь ошибка?... или может это вообще не так делается\?...
0
|
12.11.2012, 19:22 | |
Ответы с готовыми решениями:
19
ткните пальцем Smile SEO Tools - ткните пальцем плз!!! Ткните, пожалуйста, носом в ошибку. я не могу понять где, что не так Мы вводим натуральное число N, переводим в двоичный вид все числа от 1 до N и выводим на экран. Не могу найти ошибку |
16 / 16 / 12
Регистрация: 10.11.2012
Сообщений: 245
|
||||||
12.11.2012, 19:30 | 2 | |||||
Вот)) надеюсь то что вы хотели) данные я не менял, просто поправил код чтобы работал)
0
|
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 18
|
|
12.11.2012, 19:33 [ТС] | 3 |
mster-doc, СПАСИБО, но боюсь
std:: здесь на при чем... в 5 Builder и так печать на экран выводится. тут что-то другое...
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
12.11.2012, 19:34 | 4 |
0
|
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 18
|
|
12.11.2012, 19:37 [ТС] | 6 |
в смысле "до двойки" а 5, 10, и т.д. (задача стоит перебрать интервал до 1000)
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
12.11.2012, 19:38 | 7 | |||||
До двойки. Вопрос, надо ли проверять от i-1. Делить по идее надо только на простые и только те, на которое оно предположительно может разделиться. Самое большое число, на что может разделиться чётное, это половина самого числа. Самое больше, на которое может разделиться не чётное, но кратное трём, это вообще треть самого числа. И так далее. А если делитель больше половины, то это уже не делитель. Для чётных всё, что больше трети, уже не делители. И так далее. Ну может не до двойки, а с двойки. Но двойка в одном пределе обязательна.
0
|
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 18
|
|
12.11.2012, 19:39 [ТС] | 8 |
У меня проблема, как я поняла, с вычленением собственно простых чисел. так выводится весь указанный диапазон. от 2 до 9
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
12.11.2012, 19:43 | 9 |
0
|
16 / 16 / 12
Регистрация: 10.11.2012
Сообщений: 245
|
||||||
12.11.2012, 20:18 | 10 | |||||
я как из вашего кода понял, то вам ножнобыло от 2 до 9
1
|
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 18
|
|
12.11.2012, 20:35 [ТС] | 11 |
taras atavin,
что-то я все равно не поняла... Вы предлагаете разобрать числа на четные, нечетные, те, что без остатка делятся на определенное число и потом проверять остаток от деления на числа меньше половины, трети и т.д. так? а зачем сложный переключатель f? Ведь по сути у меня в коде так и написано, или не так? а что это за функция Isi?
0
|
12.11.2012, 20:43 | 12 | |||||
Вот же! В соседней теме отвечал:
0
|
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 18
|
|
12.11.2012, 20:43 [ТС] | 13 |
Я думала это не критично. Так для отладки проще.
Спасибо. А в строке 19 переменная flag увеличивается каждый раз когда чило делится нацело на едииницу, а в строке 23 выводится на экран число, в случае перебора "меньшей половины" и успешного деления нацело. так это не будет простое число... или я не права?...
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
||||||
12.11.2012, 20:47 | 14 | |||||
YuTu,
Кликните здесь для просмотра всего текста
Добавлено через 43 секунды Не по теме: Никто не в курсе, почему http://liveworkspace.org/ не грузится?
1
|
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 18
|
|
12.11.2012, 21:25 [ТС] | 16 |
Спасибо большое! , все ок. Только если диапазон до 10, а если расширить его до 100 уже выводятся и непростые числа...
1. Строка 6 зачем нужна? (защита "от дураков") если value 0. так она изначально может быть только от 2 2. for (int i = 2, end = sqrt((double)value); i <= end; i += 2) (double)value - если я ничего не путаю, то это приведение пита данных к double ? почему имеено до квадратного корня из числа происходит перебор? почему итератор увеличивается на 2? В принципе ответы уже додумала себе, но на будующее хочется оригинал узнать.
0
|
12.11.2012, 21:31 | 17 |
YuTu,
Быстрая проверка натурального числа на простоту там есть функции проверки чисел на простоту и генерирование простых чисел в заданном диапазоне.
1
|
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 18
|
|
12.11.2012, 21:56 [ТС] | 18 |
+1000 Спасибо большое!!!! я знала, что где-то здесь математический момент есть...
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
12.11.2012, 22:24 | 19 |
Перепутал) не туда и не так += 2 вписал.
Я имел в виду, что на простоту надо проверять только нечетные числа. Но мои руки записали это вот так
0
|
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 18
|
|
14.11.2012, 00:08 [ТС] | 20 |
БОЛЬШОЕ СПАСИбО ВСЕМ УЧАСТНИКАМ!!!
0
|
14.11.2012, 00:08 | |
14.11.2012, 00:08 | |
Помогаю со студенческими работами здесь
20
Ткните в ошибку Ткните носом в ошибку Ткните носом в ошибку Ткните лицом в ошибку в коде Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |