0 / 0 / 0
Регистрация: 11.06.2015
Сообщений: 17
|
|
1 | |
Определить сколько простых чисел последовательности в восьмеричном коде не имеют цифры 708.02.2019, 19:18. Показов 1706. Ответов 24
Метки нет (Все метки)
Дана последовательность из n целых чисел. Определить сколько простых чисел этой последовательности в восьмеричном коде не имеют цифры 7
0
|
08.02.2019, 19:18 | |
Ответы с готовыми решениями:
24
Определить, сколько простых чисел последовательности в восьмеричном коде не имеют цифры 7 Посчитать, сколько чисел в последовательности имеют уникальные две последние цифры Определить, сколько в последовательности пар соседних взаимно простых чисел Определить сколько в последовательности пар соседних взаимно простых чисел |
Заблокирован
|
||||||
08.02.2019, 19:39 | 3 | |||||
Ахтунг! Не отлаживал, писал на
1
|
51 / 37 / 14
Регистрация: 05.08.2016
Сообщений: 187
|
||||||
08.02.2019, 21:29 | 4 | |||||
Долго вспоминал школьную информатику. Пусть труды не пропадут зря, оставлю этот вариант здесь:
1
|
0 / 0 / 0
Регистрация: 11.06.2015
Сообщений: 17
|
|
08.02.2019, 21:41 [ТС] | 5 |
0
|
51 / 37 / 14
Регистрация: 05.08.2016
Сообщений: 187
|
|||||||||||
08.02.2019, 21:57 | 6 | ||||||||||
Реализация с while приятнее глазу.
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
08.02.2019, 22:33 | 7 |
Это хорошее занятие. Полезное. Но в условии надо, чтобы эти числа были еще и простыми. В смысле, не имеющие нетривиальных делителей. 2, 3, 5, 7, 11, 13, 17, 19, 23, 29... Но ваш код несложно подкорректировать. Просто добавить условие простоты.
Можно. Просто вводить числа по одному и проверять. Но надо договориться, что будет окончанием ввода. Можно и рандомом числа получать. Тут тоже надо договориться кой о чем. Источник чисел может быть совершенно разным. А проверка - одинакова. Поэтому ее лучше реализовать в виде функции.
0
|
51 / 37 / 14
Регистрация: 05.08.2016
Сообщений: 187
|
||||||
08.02.2019, 23:02 | 8 | |||||
Точно, спасибо. Проглядел. Вот вариант учитывающий это:
1
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
||||||
08.02.2019, 23:33 | 9 | |||||
тем не менее, можно пару замечаний?
1. Слишком много "булей". Навярняка можно без них обойтись, не усложняя логику программу. Лучший способ, имхо, обернуть проверки в функцию. 2. Тут одна просто ошибка (число 9 окажется простым) Надо "<=" Вторая - методологическая. Это при каждом проходе цикла будет вычисляться тяжеленькая функция sqrt. И не факт, что компилятор догадается это дело соптимизировать. А даже если и догадается, я бы не стал рассчитывать на его умственные способности. Свои надежнее. Ну и совсем уж мелкое, чисто вкусовое. Очень я не люблю для решения целочисленных задач привлекать math-функции. Они - приблизительные. У вас есть уверенность, что sqrt(10000) = 100? а не 99.9999 ? Это действительно так (проверялось), но так ли это для всех? Без изучения алгоритма, кода этой функции с уверенностью ответить нельзя. Да и для каждой реализации могут быть расхождения. Вам нужны эти головные боли? Когда можно просто и абсолютно уверено написать
0
|
51 / 37 / 14
Регистрация: 05.08.2016
Сообщений: 187
|
|
09.02.2019, 00:50 | 11 |
Байт, Спасибо за советы, учту.
Я хотел сделать меньшее кол-во циклов, поэтому использовал этот вариант(for (int i = 2; i < sqrt(x[tmp]); i++)) и break, чтобы лишние циклы не считать.
0
|
51 / 37 / 14
Регистрация: 05.08.2016
Сообщений: 187
|
||||||
09.02.2019, 14:32 | 13 | |||||
Спасибо! Советы полезные. Буду еще внимательнее проверять.
Кликните здесь для просмотра всего текста
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|||||||||||
09.02.2019, 14:49 | 14 | ||||||||||
Так как 8 = 23
1
|
51 / 37 / 14
Регистрация: 05.08.2016
Сообщений: 187
|
|
09.02.2019, 19:33 | 15 |
Байт, Все не просто, но вроде понял. А как узнать сложность того или иного действия не влезая в сам алгоритм?
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
09.02.2019, 20:13 | 16 |
Что именно составило трудности и сложности?
Опять же, о чем именно речь? Если о том, чем 2-й код поста 14 отличается от 1-го, то это я пояснить могу. На обычном компе двоичные операции (&, >>) реализуются очень быстро. Двоичное представление и битовые операции это его родная среда. И 1<<3 выполняется несколько быстрее, чем 1*8. Но если вас этот аспект не очень интересует, вполне можете на него положить. И на второй код не обращать внимания. Можете считать это изыском умников.
Более того, алгоритмически оба кода эквивалентны. Второй пользуется некоторыми особенностями ЭВМ, и позволяет сократить время выполнения в пару раз. Но эти разы ни в коем случае не являются показателем качества алгоритма. Они случайны. А другие мои замечания тоже мало имеют отношения к сложности алгоритма. Скорее, к простоте выражения собственных мыслей. Удачи вам!
1
|
599 / 436 / 136
Регистрация: 22.11.2017
Сообщений: 1,340
|
||||||
09.02.2019, 21:13 | 17 | |||||
alexxsuperhero, привет!
Пожалуйста. Держи код. Получение простых чисел реализовано методом Решета Эратосфена.
1
|
599 / 436 / 136
Регистрация: 22.11.2017
Сообщений: 1,340
|
|||||||||||
10.02.2019, 08:49 | 18 | ||||||||||
Элементы последовательности с одинаковым значением, подходящих по условиям считать по нескольку раз или каждое число по разу, даже если оно дублируется несколько раз?
Если по разу, то там надо в середине кода set ввести. Например, если 197 в последовательности попалось 3 раза, то к счётчику + 3? Так делает верхний мой код. Если Все 3 вхождения считать за одно (+1 к счётчику), то вот код (он подсчитывает только уникальные выполнения условий).
Это строку можно заменить на
1
|
599 / 436 / 136
Регистрация: 22.11.2017
Сообщений: 1,340
|
||||||
10.02.2019, 17:18 | 19 | |||||
Можешь мне скидывать несколько равноправных вариантов кодов, если у меня будет желание, я выполню замер и верну тебе графики, демонстрирующие время работы алгоритмов от определенного параметра.
Для текущей темы по твоим кодам результат таков. test1 - рыжий (признан самым медленным) test2 - циан test3 - зелёный (признан самым быстрым) test4 - красный test5 - белый Всё верно записано из твоих вариантов решений по этой теме?
1
|
599 / 436 / 136
Регистрация: 22.11.2017
Сообщений: 1,340
|
|
10.02.2019, 17:40 | 20 |
Тесты запускал несколько раз. Характер графиков не меняется. Расположение кругляшков одинаково.
0
|
10.02.2019, 17:40 | |
10.02.2019, 17:40 | |
Помогаю со студенческими работами здесь
20
Циклы: определить, сколько в последовательности пар соседних взаимно простых чисел Определить количество членов последовательности, которые не имеют в своем составе заданной цифры Функция, определяющая, сколько в последовательности пар соседних взаимно простых чисел Вводится последовательность целых чисел. Определить среднее арифметическое простых чисел последовательности Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |