This commit is contained in:
niko
2026-06-04 11:42:34 +02:00
parent f39ba70a9f
commit e720b98cd1
7488 changed files with 2493818 additions and 0 deletions
@@ -0,0 +1,20 @@
using System;
namespace Mono.Math.Prime.Generator
{
// Token: 0x0200000B RID: 11
public class NextPrimeFinder : SequentialSearchPrimeGeneratorBase
{
// Token: 0x0600006D RID: 109 RVA: 0x00004AD4 File Offset: 0x00002CD4
protected override BigInteger GenerateSearchBase(int bits, object Context)
{
if (Context == null)
{
throw new ArgumentNullException("Context");
}
BigInteger bigInteger = new BigInteger((BigInteger)Context);
bigInteger.SetBit(0U);
return bigInteger;
}
}
}
@@ -0,0 +1,47 @@
using System;
namespace Mono.Math.Prime.Generator
{
// Token: 0x0200000C RID: 12
public abstract class PrimeGeneratorBase
{
// Token: 0x17000002 RID: 2
// (get) Token: 0x0600006F RID: 111 RVA: 0x00004B10 File Offset: 0x00002D10
public virtual ConfidenceFactor Confidence
{
get
{
return ConfidenceFactor.Medium;
}
}
// Token: 0x17000003 RID: 3
// (get) Token: 0x06000070 RID: 112 RVA: 0x00004B14 File Offset: 0x00002D14
public virtual PrimalityTest PrimalityTest
{
get
{
return new PrimalityTest(PrimalityTests.RabinMillerTest);
}
}
// Token: 0x17000004 RID: 4
// (get) Token: 0x06000071 RID: 113 RVA: 0x00004B24 File Offset: 0x00002D24
public virtual int TrialDivisionBounds
{
get
{
return 4000;
}
}
// Token: 0x06000072 RID: 114 RVA: 0x00004B2C File Offset: 0x00002D2C
protected bool PostTrialDivisionTests(BigInteger bi)
{
return this.PrimalityTest(bi, this.Confidence);
}
// Token: 0x06000073 RID: 115
public abstract BigInteger GenerateNewPrime(int bits);
}
}
@@ -0,0 +1,91 @@
using System;
namespace Mono.Math.Prime.Generator
{
// Token: 0x0200000D RID: 13
public class SequentialSearchPrimeGeneratorBase : PrimeGeneratorBase
{
// Token: 0x06000075 RID: 117 RVA: 0x00004B48 File Offset: 0x00002D48
protected virtual BigInteger GenerateSearchBase(int bits, object context)
{
BigInteger bigInteger = BigInteger.GenerateRandom(bits);
bigInteger.SetBit(0U);
return bigInteger;
}
// Token: 0x06000076 RID: 118 RVA: 0x00004B64 File Offset: 0x00002D64
public override BigInteger GenerateNewPrime(int bits)
{
return this.GenerateNewPrime(bits, null);
}
// Token: 0x06000077 RID: 119 RVA: 0x00004B70 File Offset: 0x00002D70
public virtual BigInteger GenerateNewPrime(int bits, object context)
{
BigInteger bigInteger = this.GenerateSearchBase(bits, context);
uint num = bigInteger % 3234846615U;
int trialDivisionBounds = this.TrialDivisionBounds;
uint[] smallPrimes = BigInteger.smallPrimes;
for (;;)
{
if (num % 3U != 0U)
{
if (num % 5U != 0U)
{
if (num % 7U != 0U)
{
if (num % 11U != 0U)
{
if (num % 13U != 0U)
{
if (num % 17U != 0U)
{
if (num % 19U != 0U)
{
if (num % 23U != 0U)
{
if (num % 29U != 0U)
{
int num2 = 10;
while (num2 < smallPrimes.Length && (ulong)smallPrimes[num2] <= (ulong)((long)trialDivisionBounds))
{
if (bigInteger % smallPrimes[num2] == 0U)
{
goto IL_105;
}
num2++;
}
if (this.IsPrimeAcceptable(bigInteger, context))
{
if (this.PrimalityTest(bigInteger, this.Confidence))
{
break;
}
}
}
}
}
}
}
}
}
}
}
IL_105:
num += 2U;
if (num >= 3234846615U)
{
num -= 3234846615U;
}
bigInteger.Incr2();
}
return bigInteger;
}
// Token: 0x06000078 RID: 120 RVA: 0x00004CA4 File Offset: 0x00002EA4
protected virtual bool IsPrimeAcceptable(BigInteger bi, object context)
{
return true;
}
}
}