1 / 1 / 1
Регистрация: 27.01.2013
Сообщений: 8
|
|||||||||||
1 | |||||||||||
Функция определения простоты числа, оценка двух алгоритмов27.03.2013, 21:11. Показов 4993. Ответов 11
Метки нет Все метки)
(
Приветствую, очень нужна помощь.
В общем даны 2 функции определения, одна с Break, вторая с Exit.
В большинстве пособий мало что сказано о Break и Exit, в основном пишется, что это "не структурно, спагетти блаблабла", в школе тоже спросить не у кого, в математических оценках алгоритмов не шарю, пожалуйста, помогите.
0
|
27.03.2013, 21:11 | |
Ответы с готовыми решениями:
11
Функция Prost (проверка простоты числа), нужны комментарии
Исследовать эффективность двух алгоритмов определения простоты числа |
Модератор
10140 / 5476 / 3370
Регистрация: 17.08.2012
Сообщений: 16,730
|
|
28.03.2013, 00:40 | 2 |
Код написан с ошибками, ну да ладно.
Break - досрочный выход из цикла. Exit - досрочное завершение процедуры, функции или программы и передача управления вызывающей программе. У меня есть подозрение, что Вы не различаете понятий "алгоритм" и "реализация алгоритма". Алгоритм в обеих функциях используется один и тот же. В первом фрагменте кода происходит выход из цикла, затем выход из функции. Во втором фрагменте кода выход из функции происходит прямо из цикла. Как бы эффективнее, но, вообще, не быстрее. Вот и вся разница. Вернее, безразница. Чем здесь округлять, Trunc или Round, всё равно, но Trunc вроде как быстрее. Всего Вам доброго.
1
|
1 / 1 / 1
Регистрация: 27.01.2013
Сообщений: 8
|
|
28.03.2013, 01:19 [ТС] | 3 |
Cyborg Drone Спасибо за ответ! По поводу ошибок, если я правильно понял, имеется вторая программа. Это не ошибки, а особенности pascalabc, просто решил писать в Turbo Pascal, ибо тут народу побольше. Еще раз спасибо
0
|
Модератор
10140 / 5476 / 3370
Регистрация: 17.08.2012
Сообщений: 16,730
|
|
28.03.2013, 01:25 | 4 |
Да нет же, в обеих фрагментах со скобками беда.
0
|
1 / 1 / 1
Регистрация: 27.01.2013
Сообщений: 8
|
|||||||||||
28.03.2013, 01:41 [ТС] | 5 | ||||||||||
Ага, заметил) Ну тогда еще к Вам такой вопрос, по идее 1 не является простым числом, получается, что грамотнее будет добавить
Добавлено через 1 минуту А нет, написал не подумав Добавлено через 2 минуты
0
|
Модератор
10140 / 5476 / 3370
Регистрация: 17.08.2012
Сообщений: 16,730
|
||||||||||||||||
28.03.2013, 03:10 | 6 | |||||||||||||||
Для n = 1 проверка бессмысленна: i > 2, и по-любому (n mod i) = 1.
Ой. Сразу не усмотрел. И с циклом беда при N < 4 (с Trunc) или при N < 3 (с Round). Так, наверное, с учётом вышесказанного:
Хотя... в большинстве диалектов pascal
1
|
1 / 1 / 1
Регистрация: 27.01.2013
Сообщений: 8
|
||||||
28.03.2013, 11:54 [ТС] | 7 | |||||
Cyber Drone
А смысл? Или я чего-то не догоняю или отрицательные числа и так не будут проверяться, ибо в цикле со счетчиком программа не будет вычислять корень из отрицательного числа. вот мой вариант
А, с циклом и правда беда, как-то не усмотрел. Ваш вариант грамотнее
0
|
Модератор
10140 / 5476 / 3370
Регистрация: 17.08.2012
Сообщений: 16,730
|
||||||
28.03.2013, 12:34 | 8 | |||||
MB_worst, Вы не правы. Почему это не будет? Будет, будет... При вычислении границы цикла и возникнет ошибка. Вот если бы вторая граница не вычислялась, а сразу бы была < 0, тогда да. Может, в каком-то диалекте pascal и делается по-Вашему, не знаю. Но нужно предусматривать в том числе и то, что программа будет переводиться вообще на другие языки программирования. Это такое правило хорошего тона. Вот работа над ошибками:
Добавлено через 1 минуту Не по теме: Ой... Прозевал Ваше сообщение... Да и ладно, вроде всё равно всё в тему. Всего Вам доброго. Добавлено через 4 минуты Нет... Полагаю, чтобы с циклом разночтений не было, всё же мой предпоследний вариант, только с trunc.
1
|
1 / 1 / 1
Регистрация: 27.01.2013
Сообщений: 8
|
||||||
28.03.2013, 12:47 [ТС] | 9 | |||||
Я понял, спасибо за ликбез. Удачи
Добавлено через 11 минут В общем, наиболее оптимальный вариант вот этот
Добавлено через 53 секунды и никаких разногласий с циклом
1
|
Модератор
10140 / 5476 / 3370
Регистрация: 17.08.2012
Сообщений: 16,730
|
|
28.03.2013, 13:09 | 10 |
Да, точно... Проверка на завершение цикла выполняется перед телом цикла, и по канонам языка для выполнения операторов в цикле нужно, чтобы переменная-счётчик была не больше конечного значения.
Добавлено через 52 секунды Значит, всё же этот вариант.
1
|
1 / 1 / 1
Регистрация: 27.01.2013
Сообщений: 8
|
|||||||||||
28.03.2013, 22:43 [ТС] | 11 | ||||||||||
Немного упростил
Немного упростил
0
|
Модератор
10140 / 5476 / 3370
Регистрация: 17.08.2012
Сообщений: 16,730
|
|
31.03.2013, 14:21 | 12 |
Однако, зря. Появился ляпсус. Если n <= 1, чему будет равен Result? Ответ: неизвестно чему. Поскольку ни if, ни for не выполнятся, Result останется неиницилизированным. И что функция выдаст вожделенное false в этом случае - далеко не факт.
0
|
31.03.2013, 14:21 | |
Помогаю со студенческими работами здесь
12
Используя процедуру определения простоты заданного натурального числа, найдите все простые числа, меньшие N
Функция проверки простоты числа по методу Ферма Определение простоты числа (функция возвращает неправильный ответ) Функция определения максимального из двух Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Новые блоги и статьи
![]() |
||||
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной.
Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
|
Формулы поворота
Igor3D 10.03.2025
Добрый день
Тема
Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости".
x' = x * cos(a) - y * sin(a)
y' = y * cos(a) + x * sin(a)
Как бы Вы их. . .
|
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
|
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
|
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
|
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view.
string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
|
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
|
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет!
Отправлено 19 февраля 2025 года в 17:20:21 UTC
Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home.
Мы официально. . .
|
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
|
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
|