{Эта функция считает сумму цифр числа N}
function GetOneDigits(n: LongInt): integer;
var s: Integer;
begin
s := 0;
while n <> 0 do begin
Inc(s, n mod 10);
n := n div 10
end;
GetOneDigits := s
end;
{Эта функция считает сумму цифр разложения исходного числа N
на простые множители и возвращает в Amount число простых множителей}
function GetSimpleDigits(n: LongInt;
Var amount: Integer): Integer;
var
s, factor: Integer;
begin
s := 0; factor := 2;
amount := 0;
repeat
if n mod factor = 0 then begin
s := s + GetOneDigits(factor); Inc(amount);
n := n div factor
end
else Inc(factor)
until n = 1;
GetSimpleDigits := s
end;
{Функция возвращает N-ное число Смита}
function GetSmith(n: Integer): LongInt;
var
i, amount: Integer; od, sd: Integer;
count: LongInt;
Found: Boolean;
begin
i := 0; count := 2;
while i <> n do begin
repeat
Inc(count);
Found :=
(GetOneDigits(count) = GetSimpleDigits(count, amount)) and
(amount > 1)
until Found;
inc(i)
end;
GetSmith := Count
end;
{Функция проверяет, является ли N числом Смита}
function IsSmith(n: LongInt): Boolean;
var
i: Integer;
next: LongInt;
begin
i := 0;
repeat
Inc(i); next := GetSmith(i)
until next >= n;
IsSmith := (next = n)
end;
{Функция возвращает N-ное суперчисло Смита}
function Super(n: Integer): LongInt;
var
i, count: Integer;
smith: LongInt;
Found: Boolean;
begin
i := 0; count := 0;
while i <> n do begin
Inc(i);
repeat
Inc(count);
smith := GetSmith(count);
Found := IsSmith( GetOneDigits(smith) );
until Found;
end;
Super := smith
end;
var
X: Integer;
begin
Write('X = '); ReadLn(X);
WriteLn('Smith super number (X) = ', Super(X));
end.
Похожие записи/страницы:
- Вычисление факториала - Pascal(Паскаль)
- Из чисел от 10 до 99 вывести те, сумма цифр которых равна S(0 < S < 18)- Pascal(Паскаль)
- Написать программу, определяющую сумму трехзначных чисел, содержащих только нечетные цифры. Определить также, сколько…
- Составьте программу вычисления суммы цифр введенного с клавиатуры трехзначного натурального числа. Например, для числа…
- Найти число от M до N, квадрат которого содержит максимальное количество троек.Если искомых чисел несколько, выдать…
- Дано трехзначное число. Определить:a) является ли сумма его цифр двузначным числом; б) является ли произведение его цифр…
- Найти все 3-х значные числа, такие, что сумма цифр равна А, а само число делится на В (А и В вводится с клавиатуры) -…
- Дано число N. Найти сумму простых делителей числа N - Pascal(Паскаль)