Rizando el rizo
escafandra, creo que tu fórmula:
Cita:
Empezado por escafandra
Código Delphi [-]
function SumaPares(n, m: Integer): Integer;
begin
if(n mod 2 = 0) then dec(n);
if(m mod 2 = 0) then inc(m);
Result:= ((m - n) div 2 + (m - n) mod 2) * ((n + m) div 2);
end;
|
puede aún ser más sencilla. Debido a los dos condicionales, n y m siempre son impares y por tanto (n + m) y (n - m) siempre son pares. Entonces (m - n) mod 2 siempre es cero y se reduce a ((m - n) div 2) * ((n + m) div 2) y como los términos son pares el div coincide con la división normal, así que podemos ponerlo como
(m - n)*(m + n)/4 = (m - n)*(m + n) div 4
o sea:
Código Delphi
[-]
function SumaPares(n, m: Integer): Integer;
begin
if(n mod 2 = 0) then dec(n);
if(m mod 2 = 0) then inc(m);
Result := (m - n)*(m + n) div 4;
end;
LineComment Saludos