35 lines
835 B
C#
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;
|
|
}
|
|
}
|