Skip to content

Instantly share code, notes, and snippets.

@Kittoes0124
Last active October 1, 2023 16:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Kittoes0124/193f496405b4870f37286d7bb611c930 to your computer and use it in GitHub Desktop.
Save Kittoes0124/193f496405b4870f37286d7bb611c930 to your computer and use it in GitHub Desktop.
/*
https://byteterrace.blob.core.windows.net/temp/Gödels.dat
https://byteterrace.blob.core.windows.net/temp/Primes.dat
*/
var buffer = new byte[10];
var cacheSize = 4096;
var numbersCache = new byte[cacheSize][];
var primeIndex = 0;
var recordSeparator = ((byte)Convert.ToChar(value: 30));
using var primesFileStream = new FileStream(
options: new FileStreamOptions {
Access = FileAccess.Write,
Mode = FileMode.CreateNew,
Options = FileOptions.SequentialScan,
Share = FileShare.Read,
},
path: args[0]
);
BitConverter.GetBytes(value: 2U).CopyTo(array: buffer, index: 0);
buffer[4] = ((byte)2U.DigitalRoot());
BitConverter.GetBytes(value: 0U).CopyTo(array: buffer, index: 5);
buffer[^1] = recordSeparator;
numbersCache[primeIndex++] = buffer;
for (var i = 1U; (i < (uint.MaxValue - 2U)); i += 2U) {
var isPrime = i.IsPrime();
if (isPrime) {
buffer = new byte[10];
BitConverter.GetBytes(value: i).CopyTo(array: buffer, index: 0);
buffer[4] = ((byte)i.DigitalRoot());
BitConverter.GetBytes(value: i.ModularInverse()).CopyTo(array: buffer, index: 5);
buffer[^1] = recordSeparator;
numbersCache[primeIndex++] = buffer;
if (0 == (primeIndex % cacheSize)) {
for (var j = 0; (j < cacheSize); ++j) {
primesFileStream.Write(numbersCache[j]);
}
primeIndex = 0;
}
}
}
for (var j = 0; (j < primeIndex); ++j) {
primesFileStream.Write(numbersCache[j]);
}
Console.WriteLine("Complete.");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment