Вывести на экран все делители заданного числа
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вывести на экран все простые делители заданного натурально числа
#include int main() < int k, n; printf("Введите ваше натуральное число\n");.
Вывести на экран через запятую все делители натурального числа N
1. Вывести на экран через запятую все делители натурального числа N.
Получить все простые делители заданного числа
Дано натуральное n. Получить все простые делители этого числа
Джей Джей, puts(«») — это то же самое, что и printf(«\n»), только пишется чуть короче.
%4d означает, что целое число будет выведено в позицию из 4 символов с выравниванием по правому краю.
TheCalligrapher, ну да, но дальше-то что? Близнец перестанет являться делителем?
Этот момент, равно как и вопрос сортировки делителей по возрастанию, например, я оставляю на совесть ТС, тем более, что она-то как раз, судя по числу однояйцевых клонированных тем и сложности вопросов, отсутствует напрочь.
TheCalligrapher, согласен, но если есть желание отфильтровать вывод, можно добавить еще одно сравнение, скажем на i == n/i. Но это уже технический тонкости конечной реализации.
Я привел скорее лишь общий алгоритм.. концепцию или один из возможных вариантов решения, если угодно.
Вывести на экран все делители заданного натурального числа n
Помогите решить, выбивает ошибки Условие: Вывести на экран все делители заданного натурального.
Циклические алгоритмы: вывести на экран все простые делители заданного натурального числа
Вывести на экран все простые делители заданного натурального числа
Вывести все делители заданного целого числа
Помогите решить пару задач! 3) По теме Циклы с неизвесстным числом повторений Написать.
Вывести на экран все четные делители числа N
Вывести на экран все четные делитесь числа N. Помогите написать программу))
Источник
Найти все делители для заданного числа
Найти все делители для заданного числа:
196708423126676569286001022355850789704717014605805349202544 575890563591254090079162973668806152370560989633700137089767 703775820200092605536123071613442454080946743909994972297960 260325884838413934893551073244410428771253965567859
это программа работает только с маленькими числами
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Процедуры/функции: найти все делители заданного натурального числа и их сумму
Дано натуральное число. Найти все его делители и их сумму Program Stepen_chisla; Var Z, A.
Получить все нечётные делители заданного числа A.
Написать программу получения всех нечётных делителей заданного числа A. Помогите
Найти и вывести все делители числа
Помогите, как проще решить данную задачу. Спасибо.
Найти все делители натурального числа n.
Найти все делители натурального числа n. Решение pascal ABC
Artyom2124, зачем тебе все делители для этого числа? что ты с ними будешь делать?
но, если реально нужны — то длинная арифметика тебе в помощь!
а сколько уже нашли?
могу 268 делителей скинуть.
Лучше конечно искать за О(sqrt(n)), но и так работает
Mike_Boone, в Pascal ABC Ваш код на Pascal ABC.NET работать не будет.
И ещё. Если публикуете программу на диалекте языка, который отличается от диалекта языка в названии раздела, то указывайте, на каком именно диалекте языка написана Ваша программа.
Ничего страшного, вообще-то.
Если считаете, что Ваш ответ поможет ТС, то можете писать в Pascal ABC и на Pascal ABC.NET, поскольку у всех, как правило, установлен Pascal ABC.NET, потому что древний Pascal ABC сейчас даже найти не так уж и легко. С другой стороны, есть одна несуразность: в большинстве учебных заведений учат «классическому» паскалю (как правило, Turbo Pascal), а в качестве среды программирования рекомендуют Pascal ABC.NET, потому что он бесплатный и запускается в современных Windows без танцев с бубном. Порой даже и не подозревая, что Pascal ABC.NET и старичок Pascal ABC, от которого Pascal ABC.NET произошёл — это далеко не одно и то же.
Короче, может случиться нелепое недопонимание. Поэтому делайте приписку типа «Программа для Pascal ABC.NET».
Artyom2124, Вы уверены? Если программа будет выдавать по 1000 делителей в секунду, она будет работать более месяца, и, если делители записывать в текстовый файл, конечный объём файла будет примерно 160 гигабайт (более 170000000000 символов). Сильно сомневаюсь, что такое задание могли дать в каком-либо учебном заведении.
Artyom2124, может быть, нужно найти все простые делители?
Это я сделал. К счастью, максимальный простой делитель Вашего числа сравнительно маленький, и помещается в тип integer. Общее количество делителей числа не помещается в тип integer, для подсчёта указанной величины я использовал тип real.
Программа факторизации Вашего числа, находит все простые делители, их максимальные степени и общее количество делителей числа:
На моём древнем ноутбуке в Pascal ABC программа считает примерно 24 секунды, эта же программа, подрихтованная и запущенная в Free Pascal, считает примерно 4 секунды.
Прогон программы |
Первая колонка — номер простого делителя, вторая — величина простого делителя, третья — максимальная степень, при возведении в которую простого делителя, получившееся число всё ещё делит исходное число нацело.
Ниже таблицы — общее количество всех делителей.
Пояснения по количеству делителей: любой делитель числа может быть представлен в виде произведения степеней всех простых делителей числа, степень при конкретном простом делителе может быть от 0 до упомянутой выше максимальной степени. Таким образом, общее количество делителей равно количеству всех возможных комбинаций степеней при всех простых делителях, иными словами, произведению увеличенных на 1 максимальных степеней для каждого простого делителя.
Напоследок, если строго по заданию. Казалось бы, имеет смысл дописать мою программу. Осталось совсем немного: перебрать все степени при простых делителях, и умножить исходную единицу нужное количество раз на каждый простой делитель, и так 2963520000 раз. Короче, сущий пустяк, думаю, за год можно будет найти все делители заданного числа.
Добавлено через 2 часа 3 минуты
Если желаете, можете
хоть вручную. Сначала принимаете все степени равными 0, и получаете первый делитель:
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 0 1297 0
=1
Затем начинаем увеличивать степени, например, в порядке справа налево, и перебираем все возможные комбинации следующим образом: если степень в самом правом сомножителе достигла максимальной по таблице, то обнуляем эту степень, и увеличиваем следующую (вторую справа), и продолжаем в том же духе до тех пор, пока не переполнится и вторая справа степень, тогда увеличиваем третью справа, а вторую справа обнуляем, и так до тех пор, пока набор степеней не будет такой же, как в таблице:
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 0 1297 1
=1297
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 0 1297 2
=1682209
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 0 1297 3
=2181825073
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 0 1297 4
=2829827119681
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 0 1297 5
=3670285774226257
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 0 1297 6
=4760360649171455329
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 1 1297 0
=5651
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 1 1297 1
=7329347
.
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 1 1297 6
=26900798028467894064179
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 2 1297 0
=31933801
.
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 0 5651 2 1297 6
=152016409658872069356675529
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 1 5651 0 1297 0
=6959
.
28513 0 27943 0 26591 0 23563 0 20411 0 18541 0 17681 0 16417 0 16223 0 15161 0 12547 0 10799 0 6959 1 5651 2 1297 6
=1057882194816090730653105006311
.
28513 3 27943 1 26591 7 23563 6 20411 6 18541 4 17681 4 16417 4 16223 1 15161 4 12547 1 10799 2 6959 5 5651 2 1297 6
=19670842312667656928600102235585078970471701460580534920254 457589056359125409007916297366880615237056098963370013708976 770377582020009260553612307161344245408094674390999497229796 0260325884838413934893551073244410428771253965567859
Добавлено через 4 часа 36 минут
Хотя. Если применить что-нибудь получше строк, то. Программа на Free Pascal Compiler для печати заданного количества делителей, начиная с делителя с заданным номером:
Источник
Как вывести все делители числа
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вывести все делители данного числа
Вывести все делители данного числа
Найти все делители числа N и вывести их на экран
найти все делители числа N и вывести на экран их все: с помощью while
Требуется вывести все простые делители введенного числа
Вводится число. Требуется вывести все простые делители введенного числа.
Вывести все делители натурального числа кратные целым числам С и D одновременно
Для заданного натурального числа N: вывести на экран все делители кратные целым числам С и D.
да я вам о другом толкую.
введите, например, число 12. Оно же не простое?
ваш код, если я правильно понимаю, выведет
1
2
3
12
А куда делись делители
4
6
?!
А мой код с выводом ПАРЫ делителей выводил ВСЕ делители числа, как и требуется в задаче!
Нужно только не выводить пару, когда число N является квадратом натурального числа.
проверка на это
if (!(i==n/i)) вот тогда вывести пару делителей i и n/i
Добавлено через 2 минуты
О, точно так. Я именно такое и предлагал.
И если ваш препод не оценит это решение, тогда я не понимаю, что же он от Вас ждёт!
Отпишитесь после сдачи о результатах, плиз.
Psilon, дык, вся интрига в том, чего преподаватель добивается от автора темы.
Надеюсь, мы это узнаем после попытки сдачи кода.
я верю в то, что результат с i*i
Sergio Leone, может был вопрос про простые делители. Потому что до половины доже не вариант смотреть. Например у числа 6 делители 2 4 6, при этом 4 > 6/2.
Добавлено через 2 минуты
Sergio Leone, то есть судя по туманному описанию автора, препод просит его факторизовать число, а потом просто выводить множители, но это будет дольше, чем обычный перебор. Например:
но это бред же. Ни о каком ускорении тут речь идти не может.
Добавлено через 42 секунды
tatarrr, короче, ваш препод фигню сказал. Перебор ВСЕХ делителей числа способом, который вы написали, самый быстрый. Можете ему показать эту тему
Удалить из целого числа все делители на 2
Добрый день. Сегодня начали изучать С# и сразу же на паре дали лабораторную работу состоящую из.
Найти все делители натурального числа N
Выдает то же число, что и N. Где ошибка? Double n = Double.Parse(textBox1.Text); .
Получить все делители числа, взаимно простые с р
Решите задачу: Даны целые числа n и m. Получить все делители числа m, взаимно простые с р.
Получить все делители числа q, взаимно простые с p
Даны целые числа p и q. Получить все делители числа q, взаимно простые с p. помогите решить.
Источник
Найти все делители натурального числа
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Зная простые делители числа и их количество, найти все делители числа
Добрый вечер. Есть задача: зная простые делители числа и их количество, найти все делители числа.
Найти все простые числа, меньшие данного натурального числа
Простые числа на миллион долларов Точная оценка количества простых чисел, меньших данного числа.
Даны натуральные числа p и q. Получить все делители числа q, взаимнопростые с p
как исправить, чтобы выводились только те делители, которые взаимнопросты с p? x=int(input(‘x=’)).
Все простые делители числа
Здравствуйте, написал код для нахождения всех простых делителей числа, но он долго работает (я.
Спасибо, но код не отлажен, зацикливание, cкорее всего потеряно изменение i.
Добавлено через 11 минут
easybudda,
спасибо!
Осталось чуть-чуть:
Найдены не все делители: нет 1 и нет самого n 🙁
Должен и вправду работать быстрее, а как посчитать время? Не могу найти библиотеку time, чтобы, потом, сравнивая, запустить для какого-нибудь громадного числа типа 12345678901234567890.
Добавлено через 33 минуты
А кто-нибудь знаком с методом факторизации? Где-то краем глаза я видел, что вообще будут делители находиться тогда молниеносно.
Добавлено через 1 час 4 минуты
Введите натуральное число: 144
1 2 3 4 6 8 9 12 16 18 24 36 48 72 144
time: 0:00:00.073834
Введите натуральное число: 144
[1, 2, 3, 4, 6, 8, 9, 12, 16, 18, 24, 36, 48, 72, 144]
time: 0:00:00.008067
Введите натуральное число: 144
[1, 2, 3, 4, 6, 8, 9, 12, 16, 18, 24, 36, 48, 72, 144]
time: 0:00:02.664169
Как видим, третий алгоритм работает медленнее всех. А самый быстрый — второй.
Получается так, что генераторы списка с условием работают быстро!
Может быть, все-таки, не
то результаты получаем такие:
Введите натуральное число: 144
1 2 3 4 6 8 9 12 16 18 24 36 48 72 144
time: 0.05578800000000017
Введите натуральное число: 144
[1, 2, 3, 4, 6, 8, 9, 12, 16, 18, 24, 36, 48, 72, 144]
time: 0.003507599999999833
Введите натуральное число: 144
[1, 2, 3, 4, 6, 8, 9, 12, 16, 18, 24, 36, 48, 72, 144]
time: 2.3235660000000005
И снова, как мы видим, рулят генераторы списка с условием.
MSP_cyber,
Я не о том, что быстрее, а что медленнее.
Я том, что вы не понимаете что такое тестирование.
Нельзя делать никаких выводов по одному замеру.
Его результат может быть абсолютно случайным и иметь место быть только на вашей машине.
Добавлено через 16 минут
Вот пример тестирования производительности Python циклов: там делается 10 запусков по 10 циклов, результаты суммируются и выводится среднее время работы.
Определите значение второго по величине элемента последовательности
Такой тест уже является более-менее показательным.
Добавлено через 1 минуту
MSP_cyber,
Я не о том, что быстрее, а что медленнее.
Я том, что вы не понимаете что такое тестирование.
Нельзя делать никаких выводов по одному замеру.
Его результат может быть абсолютно случайным и иметь место быть только на вашей машине.
Добавлено через 16 минут
Вот пример тестирования производительности Python циклов: там делается 10 запусков по 10 циклов, результаты суммируются и выводится среднее время работы.
Определите значение второго по величине элемента последовательности
Такой тест уже является более-менее показательным.
Добавлено через 1 минуту
Это правильно. Только это не генератор списка, а list comprehension.
A range это тип range. Его можно назвать генератором, но только с оговоркой, что фактически он не имеет типа generator.
Согласно документации «Тип диапазона (range) представляет собой неизменяемую последовательность чисел».
1) «Факторизация» — это синоним «разложения на множители»
2) Ты странно тестируешь. Возьми достаточно большое число, и убедись, что алгоритм, который предложил я, значительно быстрее:
Введите натуральное число: 50000
1 2 4 5 8 10 16 20 25 40 50 80 100 125 200 250 400 500 625 1000 1250 2000 2500 3125 5000 6250 10000 12500 25000 50000
time: 0:00:00.006729
[1, 2, 4, 5, 8, 10, 16, 20, 25, 40, 50, 80, 100, 125, 200, 250, 400, 500, 625, 1000, 1250, 2000, 2500, 3125, 5000, 6250, 10000, 12500, 25000, 50000]
time: 0:00:00.014496
[1, 2, 4, 5, 8, 10, 16, 20, 25, 40, 50, 80, 100, 125, 200, 250, 400, 500, 625, 1000, 1250, 2000, 2500, 3125, 5000, 6250, 10000, 12500, 25000, 50000]
time: 0:00:00.000127
Если взять еще большее число, то разница станет еще более впечатляющей.
Источник