// PascalABC.NET 3.6.3
uses School;
function Divizors(n: integer): List<integer>;
begin
var L := new List<integer>;
L.Add(1);
L.Add(n);
if n > 3 then
begin
var k := 2;
while (k * k <= n) and (k < 46341) do
begin
if n mod k = 0 then
begin
var t := n div k;
L.Add(k);
if k < t then L.Add(t)
else break
end;
Inc(k)
end;
L.Sort;
end;
Result := L
end;
begin
// 1
if ReadInteger.IsPrime then Println('YES')
else Println('NO');
// 2
ReadInteger.Factorize.First.Println;
// 3
var a := Divizors(ReadInteger);
Print(a.Count, a.Sum)
end.
Это очень не так просто, как кажется на первый взгляд
Объяснение:
Далеко не всегда кодировка была 8 бит на знак.
До сих пор применяется и довольно широко кодировка 7 бит на знак.
Давно уже применяются кодировки 16 и, даже 32 бита на знак.
Но, допустим, мы используем именно ОДИН байт на знак, например ASCII
Хотя и он изначально был семибитным.
1) Дано : в каждой строке 64 знака. Ключевое слово " в строке ",
то есть нам необходимо разделять строки. Для этого в конце каждой строки нужно передать еще два знака - " EOL " и " CR " (конец строки и переход в начало следующей)
Итого в строке 66 знаков.
2) Дано на странице 64 строки. То есть мы обязаны переводить страницы. Значит 64 *66 = 4224 Знака. И еще знак подачи ( перехода ) следующей страницы
Итого на странице 4225 знаков
2) Дано : в книге 128 страниц. Значит знаков 128 * 4225 = 540800 знаков
Это в Кибибайтах 540800 / 1024 = 528.125 Kib или
Или в Килобайтах 540800 / 1000 = 540,800 Kb