Нахождение простого числа. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Нахождение простого числа. |
urbAn |
Сообщение
#1
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: 0 |
Я начинающий в этом деле , изучаю паскаль вторую неделю - но не могу разобратся с блоксхемой для данной задачи.
Задача: Ввести число B ( обязательно не простое число ) . Найти ближайшее простое число к числу B (например B=9 то ближайшее должно получится 11 , а если 20 то ближайшее 23 ). Впринципе понятно что надо писать программу при использовании циклов .И при использовании ( while и repeat ). Если кому то не лень повозится с новичком , то обьясните пожалуйсто. Сообщение отредактировано: urbAn - |
мисс_граффити |
Сообщение
#2
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
как ты видишь алгоритм поиска? можешь расписать по пунктам?
типа так: 1) ввели число В 2) ... 3) ... ну или хотя бы словами - какие циклы, какие условия выхода из них, зачем они нужны... без привязки к паскалю... по сути - что перебирать будешь -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
klem4 |
Сообщение
#3
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата например B=9 то ближайшее должно получится 11 а почему например не 7 ? Цитата а если 20 то ближайшее 23 а по моему 19 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
urbAn |
Сообщение
#4
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: 0 |
а почему например не 7 ? а по моему 19 Честно говоря так было в задании написано. По поводу блок схемы: 1) Вводим число N ( ну в данном случае 9 ) 2) Впринципе также надо вводить делитель K или не вводить чтобы он уже был , но это помоему не столь важно. 3) N делим на K если остаток 0 то к N прибавляем 1 и опять делим 4) В случае если есть остатоу - например 9:2 =4 (1) то к делителю прибавляем 1 Только тут зацикленность получается - и я не совсем понимаю как вылезти из этого... |
мисс_граффити |
Сообщение
#5
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Цитата 3) N делим на K если остаток 0 то к N прибавляем 1 и опять делим допустим, мы ищем ближайшее к 20 простое число ввели k=5 делится. 21 на 5 не делится... прибавляем 1. 21 на 5 не делится. 6 - не делится, 7 - делится... почему, кстати, прибавляем, а не отнимаем? мой тебе совет: поищи по форуму, как проверить, является ли число простым. и разберись с этим для начала... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
urbAn |
Сообщение
#6
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: 0 |
Что такое простое число я знаю - в школе я учился . Оно делится на 1 или на само себя и всё.
|
compiler |
Сообщение
#7
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Что такое простое число я знаю - в школе я учился . Оно делится на 1 или на само себя и всё. я думаю имелось ввиду как в прграмме проверить...-------------------- Спасибо!
Удачи! |
urbAn |
Сообщение
#8
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: 0 |
да - видимо я не совсем понял.
|
Neznaika |
Сообщение
#9
|
Пионер Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: 0 |
Наверно уже не нужно, но я кажется знаю, что urbAn имеет в виду.
Зачем я это написал? Эта программа является "примером", показывающим зачем нужны подпрограммы: Цитата Когда в разных частях программы выполняются несколько одинаковых действий (они решают одну и ту же задачу с возможно разными исходними данными и результатом), такие действия лучше выделить в подпрограмму. Для начинающих... |
volvo |
Сообщение
#10
|
Гость |
Цитата Зачем я это написал? Вот именно, непонятно... У автора вроде о подпрограммах - ни слова, хотя о циклах было (причем, заметь, было о циклах While/Repeat, ты же пользуешься For-ом...).Это первое... Второе - извини меня, но с точки зрения usability программа никакая - ты же везде используешь not Check, так зачем, спрашивается, ты сделал функцию проверки составного числа, и используешь ее для проверки, является ли число простым? Процессор слишком мощный? Или ты думаешь, что раз пишешь пример "для начинающих", то "и так сойдет"? Не сойдет... Если ты привык писать программы неверно, то пиши... А вот учить других (тем более, начинающих) - не надо... И не начинай мне сейчас приводить ассемблерные листинги, "доказывающие" что-то... Неинтересно оно мне. Когда меня будет интересовать экономия 10 процессорных тактов не программу из 50000 строк кода - я буду писать на ассемблере. Здесь - раздел "Паскаль". И программа, которая написана (по твоим же словам) для начинающего, должна быть ему интуитивно понятна, вот мне непонятно почему нельзя было воспользоваться IsPrime, и обойтись без NOT. Если можно более чем в одном месте программы избавиться от not-а, то это надо сделать (перечитай свою же цитату). |
Neznaika |
Сообщение
#11
|
Пионер Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: 0 |
Впринципе понятно что надо писать программу при использовании циклов - это не задание,
а размышление решающего задачу, я надеюсь. Про NOT - согласен, пометять местами TRUE и FALSE и NOT не нужен. IsPrime не крал. Удивительно, но текст совпал один в один. Про процессор/assembler не согласен - добавление/удаление NOT не влияет на скорость результирующего кода. А почему вообще можно здесь использовать отрицание? (Функция Check проверяет не любые числа!) Потому, что первый условный оператор "удаляет" из множества целых чисел те из них, которые не являются ни простыми, ни составными(1, 0 и на всякий случай все отрицательные числа). Поэтому далее число B может быть или простым или составным. По-моему, хорошо когда есть над чем хоть немного подумать, а не сразу CtrlC-CtrlV-Print-преподаватель. И for - самый главный ЦИКЛ для начинающих. Он напрямую связан с понятием последовательности (вообще с нумерацией чего-либо). Я так думаю. |
Текстовая версия | 19.04.2024 9:25 |