• Заполните массив случайными числами в интервале [100,999] и переставьте их по возрастанию количества делителей

Ответы 2

  • Если число представить в виде произведения простых чисел в целых степенях, то количество его делителей будет равно произведению всех степеней, предварительно увеличенных на 1 каждое.
  • const n=10;var a,d:array[1..n] of integer;k,i,j,t:integer; beginRandomize;for i:=1 to n do begin a[i]:=random(900)+100; write(a[i]:4); end;writeln;writeln('Количество делителей:');for i:=1 to n do begin k:=2; for j:=2 to a[i] div 2 do  if a[i] mod j = 0 then k:=k+1;  d[i]:=k;  write(d[i]:4); end;writeln;for i:=1 to n-1 do  for j:=1 to n-i do    if d[j]>d[j+1] then    begin     t:=d[j]; d[j]:=d[j+1]; d[j+1]:=t;    t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t;    end;Writeln('Отсортированный массив:');for i:=1 to n do Write(a[i],' ');Writelnend.Пример: 882 524 890 505 911 792 772 458 507 368Количество делителей:  18   6   8   4   2  24   6   4   6  10Отсортированный массив:911 505 458 524 772 507 890 368 882 792 
    • Автор:

      mendez
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years