namespace AKSTest;
using System;
using System.Numerics;
public class AksTest
{
public static void Main(string[] args)
{
const long m = 20;
for (var n = 0; n < m; n++)
{
Console.Write($"(x-1)^{n} = ");
Show(n);
Console.WriteLine();
}
Console.Write("Primes:");
for (var n = 1; n <= m; n++)
if (IsPrime(n))
Console.Write(n + " ");
Console.WriteLine();
Console.ReadLine();
}
public static void Coef(BigInteger[] c, long n)
{
c[0] = 1L;
for (var i = 0L; i < n; i++)
{
var j = i;
c[1 + j] = 1L;
for (; j > 0; j--)
c[j] = c[j - 1] - c[j];
c[0] = -c[0];
}
}
public static void Show(long n)
{
var c = new BigInteger[n + 1];
Coef(c, n);
var f = true;
do
{
Console.Write($"{(c[n] > 0 && !f ? "+" : "")}{c[n]}*x^{n}");
f = false;
} while (n-- != 0);
}
public static bool IsPrime(long n)
{
if (n <= 1) return false;
var c = new BigInteger[n + 1];
var i = 0L;
c[0] = 1L;
for (; i < n; i++)
{
var j = i;
c[1 + j] = 1L;
for (; j > 0; j--)
{
c[j] = c[j - 1] - c[j];
}
c[0] = -c[0];
}
c[0] += 1;
c[n] -= 1;
i = (n >> 1) + 1;
while (i-- != 0 && (c[i] % n) == 0) ;
return i < 0;
}
}
AKS 素性测试 算法整理
于 2024-09-15 15:53:16 首次发布