Ver Mensaje Individual
  #12  
Antiguo 24-04-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Rizando el rizo

escafandra, creo que tu fórmula:

Cita:
Empezado por escafandra Ver Mensaje
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
Responder Con Cita