Prime number
Cym13
cpicard at openmailbox.org
Mon Aug 6 18:03:53 UTC 2018
On Thursday, 2 August 2018 at 14:37:56 UTC, Greatsam4sure wrote:
> On Thursday, 2 August 2018 at 09:35:20 UTC, Cym13 wrote:
>> On Thursday, 2 August 2018 at 08:30:05 UTC, Greatsam4sure
>> wrote:
>>> I know D is very powerful from my little experience. What is
>>> the idiomatic way to get prime numbers say from 1-30 without
>>> using loops(outer and inner loop). Can map, filter, fold etc
>>> in algorithm be use. Pls show some code with chain call.
>>>
>>> I can easily achieve even numberd and odd numbers using
>>> filter. But prime numbers I have to use 2loops.
>>>
>>> I will appreciate any help,just a newbie in D
>>
>> Denis' answer is good but I'd like to add that the idiomatic D
>> solution is to use whatever tool is the most adequate to solve
>> the issue. If two loops is more natural it wouldn't make much
>> sense to force yourself to use range functions (even though
>> I'd obviously understand that stand to learn to use them).
>
>
>
> Thanks, I like the idea of using helper function from algorithm
> module to do the magic instead of loops. I want to know How To
> optimize it to efficient.
> I will appreciate any help.
Computing prime numbers efficiently would require something more
complex like an Atkin sieve which I doubt will be very easy to
implement without loop.
That said, to start optimizing without changing the algorithm you
can profile your code with -profile to see where you're spending
time that you can shave off and rewrite the code to accelerate
those parts. You should really start by changing the algorithm
though.
> I will also appreciate a link to a comprehensive tutorial on
> the algorithm module. The documentation did not give me all the
> help I needed
Not specifically on the algorithm module but I'd recommend
reading [1] for a good intro to D from basics to advanced topics.
For algorithms especially, I'd recommend reading on templates [2]
and ranges [3].
Especially one thing you should know to understand the concepts
behind most range-based functions is that most of them try to
work on infinite sequences of things and therefore make
assumptions only about the first items and never about the last
ones. That's why functions like std.algorithm.find don't just
return the element or its position but the sub-sequence starting
at that element. There are exceptions though, and this comment
may not make much sense at first so feel free to ignore it for
the moment, but hopefully it'll come back to you when you need it.
[1]: https://ddili.org/ders/d.en/index.html
[2]: https://ddili.org/ders/d.en/templates.html
[3]: https://ddili.org/ders/d.en/ranges.html
More information about the Digitalmars-d-learn
mailing list