|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2014, 13:14 | #1 |
Новичок
Джуниор
Регистрация: 17.12.2014
Сообщений: 1
|
Составьте программу в Pascal ABC.
Составьте программу, определяющую, можно ли представить данное натуральное число М в виде произведения двух простых сомножителей.
|
17.12.2014, 13:56 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
Евгения, а что не получается? Разложить число на множители не получается? Или проверить число - простое оно или нет?
|
19.12.2014, 12:11 | #3 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,949
|
Проверка числа (простое или нет):
Код:
|
19.12.2014, 18:18 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
newerow1989, функция, конечно, работает правильно,
но КРАЙНЕ неоптимально. 1-е. Нет смысла проверять делимость на 1. Поэтому цикл от единицы не очень оправдан. 2-е. Делители у числа N, (если не брать само число N) могут быть только до корень квадратный из N (включительно). У Вас же перебираются все числа. смотрите, если взять N (хотя бы) 10000, то все его ВОЗМОЖНЫЕ делители от 2-х до 100. Ваш код будет в цикле перебирать ВСЕ числа от 100 до 10000... это примерно 9900 лишних операций деления и сравнения... (если брать N побольше, то цикл лишних операций будет расти квадратично 3-е. Если мы уже нашли, что у числа БОЛЬШЕ двух делителей, зачем нам перебирать ВСЕ ОСТАЛЬНЫЕ?! Если бы стояла задача подсчитать сколько всего делителей у числа, то да, с учетом замечаний 1) и 2) мы бы считали счётчик. А Ваш код, если ему ввести число 2000000 будет 2000000 раз делить на i и считать, сколько же делителей, хотя, очевидно, что делителей у данного числа больше двух и, следовательно, число НЕ ПРОСТОЕ (а составное). p.s. на форуме полно функций, которые проверяют число на простоту и лишены перечисленных мною недостатков! Показать? |
20.12.2014, 06:13 | #5 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,949
|
Исправил:
Код:
Последний раз редактировалось newerow1989; 20.12.2014 в 06:32. |
21.12.2014, 10:28 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Составьте программу подсчета числа положительных элементов одномерного массива А(N), встречающихся в этом массиве (Pascal ABC) | Кутяшка | Помощь студентам | 6 | 28.05.2014 18:43 |
Построить алгоритм в виде блок-схем и написать соответствующую программу на языке Pascal / Pascal ABC | IgorMyakota | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 06.03.2014 07:32 |
(Turbo Pascal)Обработка текста и числа!Составьте программу,определяющую.. | Swetic | Помощь студентам | 2 | 21.01.2013 08:27 |
Дописать программу на Pascal ABC | daniil-640 | Помощь студентам | 1 | 08.06.2012 19:54 |
Написать программу на Pascal ABC | daniil-640 | Помощь студентам | 0 | 31.05.2012 13:50 |