Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 22.06.2020
Сообщений: 8

Задача на вывод простых множителей из определенного натурального числа

22.06.2020, 22:29. Показов 2336. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
сама задача

Составить программу, которая запрашивает натуральное число n и выводит
все его простые множители (т.е. произведение выведенных простых чисел должно
равняться n). Предлагается реализовать следующий алгоритм:
1. Положить текущее значение делителя d равным 2;
2. Если n = 1, перейти к 5;
3. Если n делится на d без остатка, за новое значение n принять частное от
деления n на d и вывести значение d (d – делитель n). Перейти к 2;
4. Если d2 превышает n, принять значение n в качестве d, в противном случае
увеличить значение d на единицу. Перейти к 3;
5. Завершить работу алгоритма.

дан и алгоритм решения. есть вариант решения, но он не работает - выводит бесконечное число 0.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  read(n);
  repeat 
  begin
  if n div d=0 then 
  begin
  n2:=n div d; 
  write(n2);
  end;
  if n2>n then begin
  d:=n2;
  end 
  else  d:=d+1;
  end
  until n=1;
  
write();
end.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.06.2020, 22:29
Ответы с готовыми решениями:

Создать функцию,формирующую массив простых множителей заданного натурального числа
Создать функцию,формирующую массив простых множителей заданного натурального числа

Вывод на экран простых делителей натурального числа
Здравствуйте, помогите пожалуйста с задачей Составьте программу вывода на экран дисплея простых делителей натурального числа N

Сформировать массив простых множителей заданного числа
Доброго времени суток. Помогите решить 2 задачки: 1)Сформировать массив простых множителей заданного числа 2)Коэффициенты многочлена...

8
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
23.06.2020, 04:51
Дословно по алгоитму:
Pascal
1
2
3
4
5
6
7
8
9
label l2,l3,l5;
begin
  var n:=ReadLnInteger;
  var d:=2;
  l2:if n=1 then goto l5;
  l3:if n mod d=0 then begin n:=n div d;d.Print;goto l2;end;
  if d > n then n:=d else d += 1; goto l3;
  l5:Println;
end.
1
0 / 0 / 0
Регистрация: 22.06.2020
Сообщений: 8
23.06.2020, 19:39  [ТС]
спасибо, что показал, как это должно работать. но мне кажется, что в условии какая-то ошибка - нужно же выводить n- числа, которые мы хотим получить, а не постоянную d

а если так?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
begin
var n:=ReadlnInteger;
var d:=2;
var s:boolean:=true;
while s=true do begin
if n=1 then 
begin break; end
else if n mod d=0 then begin
n:= n div d;  
n.Print; continue; end
else if d>n then
begin  n:=d; end
 else d+=1;
end;
end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
24.06.2020, 04:14
Цитата Сообщение от cinnallow Посмотреть сообщение
выводит
все его простые множители
Даём вашей программе 360
Получаем результат: 180 90 45 15 5 1
Гм! Э-э-э… А где здесь простые числа? Только одно.
0
0 / 0 / 0
Регистрация: 22.06.2020
Сообщений: 8
24.06.2020, 10:00  [ТС]
хм.
поняла, упустила каким образом меняется d. (третий блок условий)
Pascal
1
else d+=1;
и поэтому посчитала, что числа, выводимые d.print будут одинаковыми и бесполезными для решения.
нужно было сначала проверить

еще раз спасибо за помощь
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
24.06.2020, 10:12
Лучший ответ Сообщение было отмечено cinnallow как решение

Решение

Вообще, без goto, брейков и континьюмов правильней будет так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
begin
  var n:=ReadLnInteger;
  while n.IsEven do
    begin
      2.Print;
      n := n div 2;
    end;
  var d := 3;
  while n >= d do begin
    if n mod d = 0 then
      begin
        d.Print;
        n := n div d;
      end
    else
      d += 2;
  end;
end.
1
0 / 0 / 0
Регистрация: 22.06.2020
Сообщений: 8
24.06.2020, 18:28  [ТС]
Pascal
1
n.IsEven
типа функции odd()?
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
24.06.2020, 18:29
Неа!
Это типа метода.
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
24.06.2020, 20:13
Pascal
1
2
3
4
uses School;
begin
  Factorize(ReadInteger).Print
end.
вся программа
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.06.2020, 20:13
Помогаю со студенческими работами здесь

Выбирать числа, которые являются произведением простых множителей
Рассматриваются числа вида N2 - 1, где N - натуральное число. Из них выбираются те числа, которые являются произведением К различных...

Разложение числа на заданное количество взаимно простых множителей
разложить заданное число(k) на заданное кол-во взаимно простых множителей(n) (delphi,pascal)! пожайлуста очень надо , у меня ничего не...

Выбираются те числа,которые являются произведением k различных простых множителей , k<7
n-натуральное число, выбираются те числа,которые являются произведением k различных простых множителей,k&lt;7.Найти первых таких,s&lt;15/ ...

Найти количество различных простых множителей в разложении числа на простые множители.
1. Составить программу, которая находит количество различных простых множителей в разложении числа на простые множители.

Нужно найти числа которые являются произведением K различных простых множителей , k<7
Помогите пожалуйста решить задачу:Нужно найти числа которые являются произведением K различных простых множителей , k&lt;7 .Или хотя бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru