Last active
October 1, 2023 16:29
-
-
Save Kittoes0124/193f496405b4870f37286d7bb611c930 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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