Напишите программу, которая выводит в одну строчку все делители передонного ей числа,...

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

Напишите программу, которая выводит в одну строчку все делители передонного ей числа, разделяя их пробелами.


Информатика (53 баллов) | 345 просмотров
0

моя цель обычно самообучение, потому я делаю на наиболее удобном для задачи языке. Это в большенстве случаев. Иногда хочется и помочь и прочее

0

Здесь все задачи наиболее просто и эффектно решаются на PascalABC.Net 3.0, но Вы его не изучаете. Конечно, Вам виднее, что Вам нужно. Но, еще раз: именно эта версия языка создана, чтобы решать школьные и (да и вузовские задачки из непрофильного вуза) наиболее быстро, просто и понятно. Просто писать и просто проверять.

0

В этот Паскаль вошло все что нужно и из С++, и из Хаскеля и из других программных инструментов.

0

не все. Например в руби очень удобно работать с системами счисления. 4.to_s(2) и получаешь двоичное представление, 56.to_s(36) и в 36ричное представление, нигде в другом так просто и легко не видела. В каждом языке есть свои приимущества и недостатки. У паскаля много недостатков, потому что язык старый, многих плюшек не имеет, много писать.

0

Т.е. достоинство Руби - работа с системами счисления по разному основанию? И что, много таких задач есть, где надо это делать именно в программе? Я встречал за все время около десятка таких задач, да и то они олимпиадные были, а это запрещено.

0

Собственно, я написал две небольшие процедурки в Паскале для перевода чисел Х(10) -> X(n) и X(n) -> X(10) и в подобных случаях их вставляю.

0

я бы просто сказала что руби как скриптовый язык мне нравится больше других. Простой, красивый, удобный

0

Понятно. Паскаль ABC.Net 3.0 компилятор, но когда в нем работаешь, понимаешь что он практически скриптовый и к тому же, высокоскоростной.

0

Высокая скорость на самом деле нужна очень редко ведь программы то учебные

0

Иногда бывает нужна... когда просят 10^9 циклов...

Дан 1 ответ
0 голосов
Правильный ответ

// PascalABC.NET 3.0, сборка 1128
var
  i,j,k,n,p:longint;
  f:array[1..10,1..2] of longint;
begin
  p:=2; i:=1;
  f[1,1]:=1; f[1,2]:=1;
  Write('Введите натуральное число не больше 2 147 483 647: ');
  Read(n);
  while n<>1 do begin
    if (n mod p)=0 then begin
      if f[i,1]<>p then
      begin Inc(i); f[i,1]:=p; f[i,2]:=1 end
      else Inc(f[i,2]);
      n:=n div p
    end
    else inc(p)
  end;
  k:=i;
  for i:=2 to k do
    for j:=1 to f[i,2] do Write(f[i,1],' ');
  Writeln
end.

Тестовое решение:
Введите натуральное число не больше 2 147 483 647: 37534
2 7 7 383

(142k баллов)