ex-int-05-numbers/Numbers/NumberFactory/NumberImpls/PrimeNumbers.cs
2025-05-10 22:58:56 +02:00

35 lines
835 B
C#

namespace Numbers.NumberFactory.NumberImpls;
/// <summary>
/// An <see cref="AbstractNumbers" /> implementation that picks prime numbers
/// </summary>
/// <inheritdoc cref="AbstractNumbers" />
public sealed class PrimeNumbers(long lowerBound, long upperBound) : AbstractNumbers(lowerBound, upperBound)
{
protected override bool PickNumber(long number)
{
if (number < 2)
{
return false;
}
if (number == 2)
{
return true;
}
if (number % 2 == 0)
{
return false;
}
long sqrtNum = (long)Math.Sqrt(number);
for (int i = 3; i <= sqrtNum; i += 2)
{
if (number % i == 0)
{
return false;
}
}
return true;
}
}