Паскаль. Основы программирования


Задание 4 - часть 2


Таким образом, число 1 не относится ни к простым ни к составным.

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

Зная все это, возникает такой план составления программы. Найти количество делителей числа, исключая 1 и само число. Если таких делителей будет нуль, т.е. вообще не будет, тогда число является простым, иначе, оно является составным.

Для подсчета числа делителей в программе надо завести счетчик, а по окончанию цикла, выяснять его значение.

Ниже приводится программа, составленная по этому плану.

Program Problem3;

    uses WinCrt;

    var

       n, i, k : integer;

    begin

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

       readln(n);

          i := 2; k := 0;

          repeat

             if n mod i=0 then k := k + 1;

             i := i + 1

          until i>n div 2;

       if k = 0 then writeln('Число ', n, ' является простым')

                    else writeln('Число ', n, ' составное')

    end.

 

Ее можно усовершенствовать. В самом деле, зачем продолжать цикл, если найден хотя бы один делитель? Цикл надо прервать и выдать сообщение, что число составное, а затем закончить программу, иначе, продолжать цикл до конца, т. е. до

 и после цикла выдать сообщение - число простое.

Программа

с досрочным прерыванием цикла получится такой:

Program Problem3a;

   uses WinCrt;

   var

     n, i, k : integer;

     label 1, 2, 3;

   begin

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

     if n = 2 then goto 1;

     i := 2; k := 0;

     repeat

       if n mod i = 0 then goto 2;

       i := i + 1

     until i > n div 2;

   1: writeln('Число ',n, ' - простое'); goto 3;

   2: writeln('Число ',n, ' - составное');

3: end.

В обоих из приведенных вариантов компьютер проделывает много ненужной работы.

Существуют и другие способы определения, является ли число простым или составным.

Вот один из них, который вытекает из естественных соображений.

Во-первых, если число является четным, то ясно, что оно будет составным, но перед этим надо исключить из рассмотрения число 2 (оно является простым числом), т.е.проверить, если данное число равно 2, то оно является простым.

Во-вторых, надо проверять деление только на нечетные числа до n/2. И в этом случае можно использовать досрочное прерывание цикла, если делитель найден.

Программа достаточно проста и вам надо составить ее

самостоятельно.





Начало  Назад  Вперед