//
// Mono.Math.Prime.Generator.PrimeGeneratorBase.cs - Abstract Prime Generator
//
// Authors:
// Ben Maurer
//
// Copyright (c) 2003 Ben Maurer. All rights reserved
//
using System;
namespace Mono.Math.Prime.Generator {
#if INSIDE_CORLIB
internal
#else
public
#endif
abstract class PrimeGeneratorBase {
public virtual ConfidenceFactor Confidence {
get {
#if DEBUG
return ConfidenceFactor.ExtraLow;
#else
return ConfidenceFactor.Medium;
#endif
}
}
public virtual Prime.PrimalityTest PrimalityTest {
get {
return new Prime.PrimalityTest (PrimalityTests.RabinMillerTest);
}
}
public virtual int TrialDivisionBounds {
get { return 4000; }
}
///
/// Performs primality tests on bi, assumes trial division has been done.
///
/// A BigInteger that has been subjected to and passed trial division
/// False if bi is composite, true if it may be prime.
/// The speed of this method is dependent on Confidence
protected bool PostTrialDivisionTests (BigInteger bi)
{
return PrimalityTest (bi, this.Confidence);
}
public abstract BigInteger GenerateNewPrime (int bits);
}
}