All pastes #64402 Raw Edit

Miscellany

public text v1 · immutable
#64402 ·published 2006-06-11 17:14 UTC
rendered paste body
program euclides;

var j,i,n : integer; lista : array [1..30] of integer; bol : boolean;

function es_primo (n : integer) : boolean;
  function primo (n, i : integer) : boolean;
  begin
    if i > trunc(sqrt(n)) then
      primo := true
    else if n mod i = 0 then
      primo := false
    else
      primo := primo (n, i + 1);
  end;
begin
  if n < 2 then
    es_primo := false         {Por convenio}
  else
    es_primo := primo (n, 2);
end;


procedure factoriza (n : integer);
var primero : boolean;
procedure descomposicion (numero, expon, i_anterior : integer; var primero : boolean);
var resto, i : integer;
begin
  if numero > 1 then
  begin
    i := 0;
    repeat
      i := i + 1;
      resto := numero mod lista[i];
    until resto = 0;
    if i = i_anterior then
      expon := expon + 1
    else
    begin
      if expon <> 1 then
      begin
        write ('^', expon);
        expon := 1;
      end;
      if primero then
      begin
        write (lista[i]);
        primero := false;
      end
      else
        write (' * ', lista [i]);
    end;
    numero := numero div lista[i];
    descomposicion (numero, expon, i, primero);
  end
  else if numero = 1 then
  begin
  if primero then
    write ('1')
  else if expon <> 1 then
    write ('^', expon);
  end;
end;
begin
  write (n, ' = ');
  if n < 0 then
  begin
    write ('- ');
    n := - n;
  end;
  if n = 0 then
    writeln ('0')
  else
  begin
    primero := true;
    descomposicion (n, 1, 0, primero);
    writeln;
  end;
end;
begin

j := 0;
for i :=2 to 100 do

if es_primo (i) then
begin
  j := j+1;
  lista[j]:=i;
end;
for i := 1 to 100 do
factoriza(i);
end.