C#: Calcular los primeros n números de Harshad

Tiempo de lectura: < 1 minuto

La serie de números Harshad, también conocida como números Niven, está formada por números naturales que son divisibles por la suma de sus dígitos. En otras palabras, un número Harshad es aquel que se puede dividir exactamente por la suma de sus dígitos. Por ejemplo, el número 18 es un número Harshad porque es divisible por la suma de sus dígitos (1 + 8 = 9). Los primeros términos de la serie son: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 18, 20, 21, 24, ...

//Usings.
using System

/// <summary>
/// Calcula los primeros n números de Harshad.
/// </summary>
/// <param name="n">La cantidad de números de Harshad a calcular.</param>
/// <returns>Un array que contiene los primeros n números de Harshad.</returns>
public static int[] HarshadNumbers(int n)
{
	if (n <= 0)
	{
		throw new ArgumentException("La cantidad de números debe ser mayor que cero.", nameof(n));
	}

	int[] harshad = new int[n];
	int count = 0;
	int number = 1;

	while (count < n)
	{
		if (number % SumOfDigits(number) == 0)
		{
			harshad[count] = number;
			count++;
		}
		number++;
	}

	return harshad;
}

/// <summary>
/// Calcula la suma de los dígitos de un número.
/// </summary>
/// <param name="number">El número del cual se desea calcular la suma de los dígitos.</param>
/// <returns>La suma de los dígitos del número.</returns>
private static int SumOfDigits(int number)
{
	int sum = 0;

	while (number != 0)
	{
		sum += number % 10;
		number /= 10;
	}

	return sum;
}

Deja un comentario