Задачи по циклам
|
|
Van_der_Vlaad | Дата: Воскресенье, 09.11.2008, 00:17 | Сообщение # 1 |
Старый знакомый
Группа: Пользователи
Сообщений: 35
Статус: Offline
| Уважаемые знатоки Паскаля! Хочу предложить вам ряд задач на циклы. 1. Последовательно вводятся N целых чисел. Найти минимальное из положительных простых значений. 2. Дано натуральное число n. Проверить, будут ли все цифры числа различными. 3. Составить алгоритм для нахождение всех автоморфных чисел на отрезке [m;n]. Автоморфным называется число, ктр равно последним числам своего квадрата. Например: 5(в квадрате)=25; 25(в квадрате)=625. 4. Найти натуральное число из диапазона от 1 до n с максимальной суммой простых делителей. 5. Среди всех натуральных чисел из интервала [m;n] найти и вывести те, которые образуют взаимно простую пару с числом, введенным с клавиатуры. Также хочу отметить, что задачи желательно решить до завтрашнего вечера и что мне не обязательно полное решение, а достаточно куска кода, где прослеживается алгоритм решения
|
|
| |
Alexander | Дата: Воскресенье, 09.11.2008, 01:03 | Сообщение # 2 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| 1) Под "значениями" понимать введённые числа? 2) Перевести число в строку и проверить при помощи вложенного цикла. 3) Это уже обсуждалось http://pascal-for-all.ucoz.ru/forum/11-143-1 . Над 4 и 5 стоит подумать, их конечно можно и "в лоб" решить, но это не спортивно .
Скажем дружно- нафиг нужно!
|
|
| |
Van_der_Vlaad | Дата: Воскресенье, 09.11.2008, 02:40 | Сообщение # 3 |
Старый знакомый
Группа: Пользователи
Сообщений: 35
Статус: Offline
| 1) да 2)хм...брать каждый символ и проверять есть ли он еще раз в строке. если нет, то счетчику присваеваем +1. в итоге, если счетчик равен длине, то все ок? 3) тут конешно мусорка у вас там, нужно разобраться 4,5) не стоит особо думать, чем проще-тем лучше, тут как раз в этом фишка. сразу хочу попросить-без слишком умных вещей, я понимаю что они облегчают код, но тут-чем проще, тем лучше. ---------- З.Ы. извините, не принимал последнее время участия в решение задач в связи с тем, что лежал в больнице с аппендицитом.
|
|
| |
Alexander | Дата: Воскресенье, 09.11.2008, 03:35 | Сообщение # 4 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| 1) в таком случае в условии не нужно было оговаривать, что это положительные числа(простое число всегда положительно). Следует воспользоваться примерно такой функцией для определения простоты числа: Code test:=true; if x=2 then .... мы нашли наименьшее просто, можно вообще программу завершать. else if not odd(x) then test:=false {составное} else begin i:=3; while i<=sqrt(x) do if x mod i=0 then begin test:=false; {составное} break; end else inc(i,2); end; С её помощью нужно проверить все введённые числа. Quote (Van_der_Vlaad) 2)хм...брать каждый символ и проверять есть ли он еще раз в строке. если нет, то счетчику присваеваем +1. в итоге, если счетчик равен длине, то все ок? Нет. Code for i:=1 to n-1 do for j:=i+1 to n do if s[i]=s[j] then begin WriteLn('нет'); exit; end; WriteLn('да'); Quote (Van_der_Vlaad) 3) тут конешно мусорка у вас там, нужно разобраться 11 сообщений, из которых менее половины информативные- просто непомерно много. 4) эквивалентна задаче: "найти самое большое простое число не превосходящее n." 5) найти простые делители числа, введённого с клавиатуры, и запомнить их в массиве. проверить, делятся ли числа из интервала хоть на одно из массива. Quote (Van_der_Vlaad) лежал в больнице с аппендицитом. С выздоровлением.
Скажем дружно- нафиг нужно!
Сообщение отредактировал Alexander - Воскресенье, 09.11.2008, 03:36 |
|
| |
Van_der_Vlaad | Дата: Воскресенье, 09.11.2008, 19:10 | Сообщение # 5 |
Старый знакомый
Группа: Пользователи
Сообщений: 35
Статус: Offline
| 1) если не затруднит, не могли бы Вы предложить более понятный способ решения этой задачи?... 2) спасибо, тут вроде пока все понятно 3)... 4)ну по идее, если мыслить прямолинейно, то нам в этой задаче нужно брать каждое число из диапазона, находить его делители, вычленять простые, и находить их сумму. хотя стоп стоп стоп! я понял! извините, вопрос этот отпадает. но появляется другой. каков алгоритм определения числа на простое? 5)вот эта задача у меня вызывает спорные мысли. не могли бы вы ее написать? P.S. временной промежуток расширяется до вечера вторника
|
|
| |
snaper1993 | Дата: Воскресенье, 09.11.2008, 19:24 | Сообщение # 6 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| 4 как я думаю: Code for i:=1 to n do if (i mod 10)<1 then writeln('prostoe'); ето моя мысль!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Seqular | Дата: Воскресенье, 09.11.2008, 19:31 | Сообщение # 7 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Van_der_Vlaad, Насчет простых чисел, посмотрите тут
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Alexander | Дата: Воскресенье, 09.11.2008, 20:47 | Сообщение # 8 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (Seqular) Насчет простых чисел, посмотрите тут не смотри там, автор не знаком с теорией чисел. Если у числа есть простой делитель, то он меньше или равен квадратному корню из этого числа+там ещё и деление на единицу проверяется, поэтому по тому алгоритму любое число составное. Quote (snaper1993) 4 как я думаю: Ты вообще в курсе, какие числа называются простыми? Quote (Van_der_Vlaad) 1) если не затруднит, не могли бы Вы предложить более понятный способ решения этой задачи?... Я и так 80% кода уже написал. Давай уже свой код. Насчёт остальных задач- предлагаю сначала разобраться с первой.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Воскресенье, 09.11.2008, 23:37 | Сообщение # 9 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Alexander, я чото не про то подумал! А какие числа простые!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Воскресенье, 09.11.2008, 23:45 | Сообщение # 10 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (snaper1993) А какие числа простые! Это вопрос или восклицание?
Скажем дружно- нафиг нужно!
|
|
| |
Van_der_Vlaad | Дата: Понедельник, 10.11.2008, 00:00 | Сообщение # 11 |
Старый знакомый
Группа: Пользователи
Сообщений: 35
Статус: Offline
| Quote А какие числа простые! те которые делятся только на себя и на единицу. Quote Насчёт остальных задач- предлагаю сначала разобраться с первой. да, действительно. я, честно говоря не совсем понял ваше решение. мой алгоритм предполагает следующее - вводим в цикле, значения последовательности, каждое введенное значение проверяем на положительность и "простоту". если да, то находим сравниваем с минимальным и т.д. проюлема в другом-я не совсем понял как определять "простоту" числа и какое значение задатьь первым минимальным.
|
|
| |
Alexander | Дата: Понедельник, 10.11.2008, 00:14 | Сообщение # 12 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Code test:=true; if x<2 then test:=false else if x=2 then else if not odd(x) then test:=false else begin i:=3; while i<=sqrt(x) do if x mod i=0 then begin test:=false; break; end else inc(i,2); end; WriteLn(test); Эта программа выведет на экран true, если число простое и false, если составное. Quote (Van_der_Vlaad) те которые делятся только на себя и на единицу. нет, простое число, это натуральное число, которое имеет ровно 2 различных делителя.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Понедельник, 10.11.2008, 05:27 | Сообщение # 13 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Quote нет, простое число, это натуральное число, которое имеет ровно 2 различных делителя. то ето и есть числа которые деляться на себя и на 1 потомушто все натуральные числа деляться на себя и на 1! ето и есть 2 различных делитиля!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |