Deutsch English Français Italiano |
<v9o3q1$1h24f$1@raubtier-asyl.eternal-september.org> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.nobody.at!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!raubtier-asyl.eternal-september.org!.POSTED!not-for-mail From: Bonita Montero <Bonita.Montero@gmail.com> Newsgroups: comp.lang.c++ Subject: Re: OT: Re: Sieve of Erastosthenes optimized to the max Date: Fri, 16 Aug 2024 19:55:13 +0200 Organization: A noiseless patient Spider Lines: 46 Message-ID: <v9o3q1$1h24f$1@raubtier-asyl.eternal-september.org> References: <ul41d4$2koct$1@raubtier-asyl.eternal-september.org> <utoh9d$6lrr$1@raubtier-asyl.eternal-september.org> <utq0ag$hvrl$3@dont-email.me> <utq0os$ibqn$1@raubtier-asyl.eternal-september.org> <utq11p$icmm$1@dont-email.me> <v25c87$1ld9m$1@dont-email.me> <86r0duwqgg.fsf@linuxsc.com> <v39o3l$1lvju$1@dont-email.me> <86o78mpnlf.fsf@linuxsc.com> <v3fv2u$2ursd$1@dont-email.me> <86ttibod7n.fsf@linuxsc.com> <86h6eaoi2r.fsf@linuxsc.com> <v4sool$1grge$1@dont-email.me> <867celixcw.fsf@linuxsc.com> <v5sg9s$mat4$1@dont-email.me> <86zfr0b9hw.fsf@linuxsc.com> <v638ud$25623$1@dont-email.me> <861q3o5do1.fsf@linuxsc.com> <v7tdts$29195$1@dont-email.me> <868qx45v5g.fsf@linuxsc.com> <v9lbns$11alj$1@dont-email.me> <86r0aojx1m.fsf@linuxsc.com> <v9o2kf$1gqv1$1@raubtier-asyl.eternal-september.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Fri, 16 Aug 2024 19:55:18 +0200 (CEST) Injection-Info: raubtier-asyl.eternal-september.org; posting-host="0ce01068ee5bc70359191bd6d34fff1b"; logging-data="1607823"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/l37+m1SGzaiZFESsljusWhg3J8oymZC4=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:zKDP4KQUH8EiLtYtepIKCvX9v/E= Content-Language: de-DE In-Reply-To: <v9o2kf$1gqv1$1@raubtier-asyl.eternal-september.org> Bytes: 3385 Am 16.08.2024 um 19:35 schrieb Bonita Montero: > But basically I don't think it is a good idea to skip numbers exept > multiples of two. With the three you save a sixth of memory, with > the five you save a 15-th and at the end you get about 20% less > storage (1 / (2 * 3) + 1 / (2 * 3 * 5) + 1 / (2 * 3 * 5 * 7) ...) > for a lot of computation. That's the point where I dropped this > idea and I think this extra computation is higher than the time > for the saved memory loads. > This calculates the percentage of the memory-access-savings: #include <iostream> #include <span> #include <algorithm> using namespace std; int main() { static unsigned const rawPrimes[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541 }; span primes( rawPrimes ); double sum = 0.0; auto rEnd = primes.rend(), cur = rEnd - 2; do { double add = 1.0; for_each( cur, rEnd, [&]( int p ) { add /= p; } ); sum += add; } while( --cur != primes.rbegin() ); cout << 100 * sum << "%" << endl; }