Задача 3. Составить программу разложения натурального числа n на простые множители. — КиберПедия 

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Задача 3. Составить программу разложения натурального числа n на простые множители.

2020-12-06 450
Задача 3. Составить программу разложения натурального числа n на простые множители. 0.00 из 5.00 0 оценок
Заказать работу

Решение

Способ

Алгоритм решения. В качестве первого делителя взять 2, присвоить это значение некоторой переменной i;

начать цикл " пока i <= n";

если данное число n делится на i, тогда выдать на экран значение i и разделив данное число на i, присвоить новое значение той же переменной n (n:= n div i);

далее цикл продолжить, но значение i не увеличивать на 1, а проверить деление нового значения n на прежнее значение i;

если n не делится на i, тогда i увеличить на 1 (i:= i + 1) и продолжить цикл, т.е. выполнить проверку условия цикла (i <= n), а затем снова проверить деление n на уже новое значение i.

Program Problem3; { Разлож. числа на прост. множит.. 1- й спос. }

uses Crt;

var

  n, i: integer;

begin

  write('Введите натуральное число '); readln(n);

  write('Простые делители числа ', n, ' следующие; ');

  i:= 2;

  while i <= n do

      if n mod i =0 then

                               begin

                                  write(i, ' ');

                                  n:= n div i

                               end

                             else i:= i + 1

end.

Способ.

Алгоритм решения.

Вначале находим все делители, равные 2. Для этого последовательно делим число 360 на 2:

 

После этого, полученный результат делим на нечетные числа. Причем на каждое нечетное число делим не один раз, а до тех пор, пока такое деление будет возможным.

Делим на 3: 45:3 = 15, 15:3 = 5.

Делим на 5: 5:5 = 1.

Делим на 7, не делится, пробуем делить на следующее нечетное число.

Делим на 9, не делится, переходим к следующему нечетному числу.

Делим на 11, не делится, и так далее.

До тех пор будем пробовать деление на нечетные числа, пока они будут меньше или равны получаемому частному от деления числа на соответствующий делитель.

 

На основании этих соображений составляем программу.

 

Program Problem3a;

uses Crt;

var

  i, n: integer;

begin

write(' Введите целое число '); readln(n); writeln;

writeln('Простые делители целого числа ', n);

{----------------------------------------------------------------------------------------}

while n mod 2 = 0 do { Цикл для вывода делителей, равных 2 }

    begin

       write(2, ' ');

       n:= n div 2

    end;

{----------------------------------------------------------------------------------------}

i:= 3;

while i <= n do       { Цикл для нечетных делителей }

    if n mod i = 0

        then

          begin             

             write(i, ' ');

             n:= n div i

          end

       else i:= i + 2;

  writeln

end.

 

Задача 4. Написать программу, в результате выполнения которой выяснится, входит ли цифра 2 в запись данного целого числа n.

Решение

Алгоритм решения.

1. Начало. Переменные целого типа n, p, k: n - для вводимого числа; p - для цифр этого числа; k - счетчик, подсчитывающий количество цифр в числе, равных 2.

2. Ввод целого числа.

Счетчику k устанавливается первоначальное значение 0.

3. Цикл, пока n <> 0. В цикле, переменной p присваивать значение цифры числа.

Если p = 2, тогда увеличивать k на единицу.

Вычесть из числа n последнюю цифру и разделить его на 10.

Продолжить и закончить цикл.

4. Если k = 0, тогда выдать сообщение: "Цифра 2 не входит в запись числа", иначе, выдать сообщение: "Цифра 2 входит в запись числа".

5. Конец.  

Program Problem4; { Входит ли цифра 2 в запись числа }

uses WinCrt;

var

  n, p, k: integer;

begin

  write(' Введите целое число '); readln(n);

  k:= 0;

  while n <> 0 do

     begin

        p:= n mod 10;

               if p = 2 then k:= k + 1;

        n:= n div 10

     end ;      

      if k = 0 then writeln('Цифра 2 не входит в запись этого числа')

                    else writeln('Цифра 2 входит в запись этого числа')

end.

 

Задача 5. Составить программу вывода всех натуральных чисел, меньших n, квадрат суммы цифр которых равен заданному числу m.

Решение

Алгоритм решения.

1. Раздел описаний.

Переменные: n, m, k, a, p, s. Тип целый.

n - для границы значений натуральных чисел, m - для числа, с которым сравнивается квадрат суммы цифр (точный квадрат), k - для натуральных чисел от 1 до n, a - для запоминания натурального числа, перед тем, как будет определяться сумма его цифр, p - для цифр числа, s - для суммы цифр.

2. Раздел операторов.

Ввод значений n и m. Установить первоначальное значение для k (эта переменная " перебирает " все натуральные числа от 1 до n, k:= 1).

Цикл, пока k <= n.

В цикле: установить первоначальные значения для суммы s (s:=0); запомнить число в переменную a (a:= k).

Цикл для подсчета суммы цифр, пока k <> 0.

В цикле: выделять по одной цифре числа, известным способом; прибавлять по одной цифре к сумме; уменьшать число на последнюю цифру и на порядок.

Закончить цикл для подсчета суммы цифр.

Проверка выполнения условия.

Если квадрат суммы цифр равен заданному числу,

  тогда вывести это натуральное число на экран.

Перейти к проверке следующего числа.

Закончить основной цикл проверки чисел.

3. Закончить программу.

Program Problem 5;

uses Crt;

var

   n, m, k, a, p, s: integer;

begin

   write('Введите натуральное число, до которого ');

   write('выводить искомые числа '); readln(n);

   writeln('Введите число, с которым сравниваете квадрат');

   write('его суммы цифр. Оно должно быть точн. квадрат. '); readln(m);

   write('Искомые числа: ');

   k:= 1;

      while k <= n do

         begin

            s:= 0; a:= k;

            while k <> 0 do

               begin

                  p:= k mod 10;

                  s:= s + p;

                  k:= k div 10

               end;

             if sqr(s) = m then write(a, ' ');

             k:= a + 1

         end

end.

 


Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.006 с.