﻿function isPrime(n: integer): boolean;
begin
  result := n > 1 ? true : false;
  for var i := 2 to (n div 2) do
    if (n mod i = 0) then
    begin
      result := false;
      exit;
    end;
end;

begin
  var n: integer;
  
  Writeln('введите натуральное число < 10001');
  while True do
    if integer.TryParse(ReadString('n ='), n) 
      and (n > 0) and (n <= 10000) then break;
  
  var Sum := 0;
  
  for var i := 2 to n div 2 do
    if (n mod i = 0) and isPrime(i) then Sum += i;
  
  if isPrime(n) then Sum += n;
  
  var s := Sum.ToString;
  
  for var i := 1 to s.Length div 2 do
    Swap(s[i], s[s.Length + 1 - i]);
  
  Println;
  Writeln('Sum = ',Sum);
  Write(s.ToInteger = Sum?'палиндром':'не палиндром')
end.
