Даны четыре числа. Для каждого числа найти все его делители и подсчитать их количество...

0 голосов
34 просмотров

Даны четыре числа. Для каждого числа найти все его делители и подсчитать их количество Pascal


Информатика (15 баллов) | 34 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Var
   A,d,k,i:longint;
Begin
WriteLn('Введите четыре числа');
For i:= 1 to 4 do
    Begin
    Read(A);
    Write('Делители числа ',A,': ',A,', ');
    d:=A div 2+1;
    While d>0 do
       Begin
       if A mod d = 0 then
          Begin
          Write(d,', ');
          k:=k+1;
          End;
       d:=d-1;
       End;
    Write('кол-во его делителей: ',k);
    k:=1;
    WriteLn;
    End;
End.

Пример:
Введите четыре числа
987654321 32767 256 13
Делители числа 987654321: 987654321, 329218107, 109739369, 58097313, 19365771, 6455257, 3417489, 1139163, 379721, 2601, 867, 289, 153, 51, 17, 9, 3, 1, кол-во его делителей: 17
Делители числа 32767: 32767, 4681, 1057, 217, 151, 31, 7, 1, кол-во его делителей: 8
Делители числа 256: 256, 128, 64, 32, 16, 8, 4, 2, 1, кол-во его делителей: 9
Делители числа 13: 13, 1, кол-во его делителей: 2

(34.0k баллов)
0 голосов

Var
  i: integer;
  ar: array[1..4]of integer;

 procedure Divisor(x: integer);
 var
  d, c: integer;
 begin
  c := 1;
  if(x < 1) then exit;
  write(x, ' = ');
  if(x = 1) then begin writeln(1, ' Количество делителей:', 1);exit end; 
  d := 2;
  while x > 1 do
  begin
    if(x mod d = 0) then
     begin
      if(x div d <> 1) then write(d, ' * ')
       else write(d, '; ', ' Количество делителей:', c);
        x := x div d;
        c := c + 1;
     end
    else d := d + 1;
  end;
  writeln;
end;
  begin
  writeln('Введите четыре числа:');
  for i := 1 to 4 do read(ar[i]); 
  writeln;
  for i := 1 to 4 do Divisor(ar[i]);
end.

(3.7k баллов)