Número entero como resta de cuadrados

Sergio Cía Luvecce

(No he usado ni float ni double para definir la raíz cuadrada de n ya que, al no definirla, me devuelve la parte entera de la raíz cuadrada, que me sirve igualmente.)

/* Este es un programa que, al introducir un número natural, te devuelve
todas las posibles maneras de poner ese número como resta de cuadrados perfectos.

Nota: un número de la forma 4k+2, con k perteneciente a los naturales, no se puede
expresar como resta de cuadrados. */

#include <iostream>
#include <math.h>

using namespace std;

int main ()
{
int n, l, i, cuadrado_mayor, cuadrado_menor;
char super_2, u_a;
super_2=253;
u_a=163;

cout << “Introduce tu n” << u_a << “mero: “;
cin >> n;

if ((n%4==2)||(n<=0))
cout << “Error.”;
else
{
if ((n%4==1)||(n%4==3))
{
cout << n << ” = “;
for (i=1; i<=sqrt(n); i++)
{
switch(n%i)
{
case 0:
l=n/i;
cuadrado_mayor=(l+i)/2;
cuadrado_menor=cuadrado_mayor-i; // También se puede poner como (l-i)/2
cout << cuadrado_mayor << super_2 << “-” << cuadrado_menor << super_2 << “, “;
break;
default: continue;
}
}
}
else
{
cout << n << ” = “;
for (i=1; i<=sqrt(n)/2; i++)
{
switch (n%(2*i))
{
case 0:
l=n/(2*i);
if (l%2==0)
{
cuadrado_mayor=(l+2*i)/2;
cuadrado_menor=cuadrado_mayor-(2*i);
cout << cuadrado_mayor << super_2 << “-” << cuadrado_menor << super_2 << “, “;
}
else continue;
break;
default: continue;
}
}
}

}
cout << endl << endl;
return 0;
}

Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s