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


Задание 2


Найти наименьшее натуральное число n, такое, что

 не делится на n, но
 делится на n.

(Составьте и используйте процедуру вычисления степени натурального числа с натуральным показателем.)


Пример 5. Число, состоящее из n (n > 1) цифр, называется числом Армстронга, если сумма его цифр, возведенных в n-ю степень равна самому этому числу.

Например, числами Армстронга являются 153 и 1634, так как 

153 = 13

+ 53 + 33,  1634 = 14 + 64 + 34

+ 44.

Составить программу, которая будет находить все n-значные числа Армстронга (n - входное данное, причем n < 10).

Математический анализ задачи

Пользователем задается, образно говоря, n - значность числа, т.е. количество цифр, которое должно быть в числе. Например, он может задать, что числа 5-ти значные. Программа должна из всех пятизначных чисел найти числа Армстронга, если, конечно, такие есть.

Для этого, в программе надо определять наименьшее n-значное число, что сделать просто, организовав цикл от 1 до n - 1 и умножая, заведомо установленную переменную (первоначальное значение которой равно 1) на 10. Чтобы установить наибольшее n-значное число, достаточно наименьшее n-значное умножить на 10 и вычесть 1. Например, для 5-значных чисел, наименьшим будет 10000, а наибольшее

Для определения наименьшего и наибольшего n-значного числа создадим такую процедуру:

    Procedure minmax(n : longint; var

min, max : longint);

        var

            i : longint;

        begin

           min := 1;

           for i := 1 to n - 1 do min := min*10;

           max := min*10 - 1

        end;

Каждую цифру числа придется возводить в n-ю степень, для этого снова потребуется процедура возведения в степень. Она уже нам знакома:

  

  Procedure extent(a, n : longint; var

s : longint);

        var

            i : longint;

        begin

           s := 1;

           for i := 1 to n do s := s*a

        end;

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




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