En este post de programación inicial con C# programando normalmente en Visual Studio vamos a ver cómo determinar si un número es par o impar.
Para esto vamos a usar el operador módulo y comparar el resultado. También vamos a ver otra manera de hacerlo sin el operador módulo, o sea que básicamente veremos dos maneras de saber si un número es par o impar con C#.
Explicando el operador módulo
Este operador te dice el sobrante que queda al dividir 2 números de manera entera, es decir, como si los decimales no existieran.
Por ejemplo, si dividimos 5 entre 2 sabemos que el resultado es 2.5; pero si lo dividimos sin decimales podemos decir que 5 entre 2 es 2, y sobra 1.
Pues exactamente ese sobrante nos va a ayudar a saber si un número es par o impar en Visual Studio, ya que si el sobrante es 1 el número será impar, y si no, será par.
Nota: siempre vamos a dividir entre 2, sin importar el número dividido. Por cierto, el módulo se representa con el operador %
.
Par o impar con C# y módulo
Entonces veamos el código para saber si un número es par o impar:
Console.WriteLine("Escribe un número: ");
long numero = Convert.ToInt64(Console.ReadLine());
long sobrante = numero % 2;
if (sobrante == 0)
{
Console.WriteLine("El número es par");
}
else
{
Console.WriteLine("El número es impar");
}
Como dije anteriormente, el sobrante siempre será un 1 o un 0 al dividir entre 2. Y si es cero entonces es par, pero si no, es impar.
Usando operaciones a nivel de bits
Podemos usar el truco de comparar números a nivel binario con el operador AND y obtener el resultado. Eso está mejor explicado en este post: par o impar con comparaciones lógicas.
No lo explico aquí porque sería repetitivo, así que si te quedan dudas simplemente lee el post anteriormente mencionado.
Console.WriteLine("Escribe un número: ");
long numero = Convert.ToInt64(Console.ReadLine());
long sobrante = numero & 1;
if (sobrante == 0)
{
Console.WriteLine("El número es par");
}
else
{
Console.WriteLine("El número es impar");
}
Al final el resultado, de nuevo, será 1 o 0; pero ambas cosas son totalmente distintas. En el primer caso usamos el operador módulo y en el segundo caso usamos operaciones binarias.
Poniendo todo junto
El código completo que además prueba ambos métodos queda así:
using System;
namespace ParImpar
{
class Program
{
static void Main(string[] args)
{
// https://parzibyte.me/blog
Console.WriteLine("Escribe un número: ");
long numero = Convert.ToInt64(Console.ReadLine());
long sobrante = numero % 2;
if (sobrante == 0)
{
Console.WriteLine("El número es par");
}
else
{
Console.WriteLine("El número es impar");
}
SinModulo();
}
static void SinModulo()
{
Console.WriteLine("Escribe un número: ");
long numero = Convert.ToInt64(Console.ReadLine());
long sobrante = numero & 1;
if (sobrante == 0)
{
Console.WriteLine("El número es par");
}
else
{
Console.WriteLine("El número es impar");
}
}
}
}
Toma en cuenta que puse el código de la operación de bits en un método nuevo para separar los conceptos, no es obligatorio tenerlo así. Al probarlo, la ejecución es correcta:
Y así es como determinamos si un número es impar o par en C#.
También puedes ver un video explicativo:
Para terminar este post te dejo con más tutoriales de C# en mi blog.