Sieve of Pritchard: Difference between revisions
Content added Content deleted
(Added C# version, loosely translated from python version) |
m (→{{header|C#|CSharp}}: heh, neglected to post the latest code...) |
||
Line 40: | Line 40: | ||
var primes = new List<int>(); |
var primes = new List<int>(); |
||
while (prime <= rtlim) { |
while (prime <= rtlim) { |
||
if (stp < limit) |
if (stp < limit) { |
||
var nu = new List<int>(); |
|||
foreach (var w in members) { |
|||
n = w + stp; |
n = w + stp; |
||
while (n <= limit) { |
while (n <= limit) { nu.Add(n); n += stp; } |
||
} |
} |
||
members.UnionWith(nu); |
|||
} |
|||
stp = Math.Min(prime * stp, limit); |
|||
np = 0; |
np = 0; |
||
var wb = new List<int>(); |
|||
foreach (var w in members) { |
|||
if (np == 0 && w > prime) np = w; // next prime |
if (np == 0 && w > prime) np = w; // next prime |
||
if (members.Contains(n = prime * w)) |
if (members.Contains(n = prime * w)) wb.Add(n); |
||
} |
} |
||
foreach (var itm in wb) if (members.Contains(itm)) members.Remove(itm); |
|||
primes.Add(prime); |
primes.Add(prime); |
||
prime = prime == 2 ? 3 : np; |
prime = prime == 2 ? 3 : np; |
||
Line 60: | Line 65: | ||
static void Main(string[] args) { |
static void Main(string[] args) { |
||
Console.WriteLine("[" |
Console.WriteLine("[{0}]", string.Join(", ", PrimesUpTo(10000))); |
||
} |
} |
||
}</syntaxhighlight> |
}</syntaxhighlight> |