The choice as to which part of the gerund chooses has to be made for each
number. Use rank to let it process each number separatery.

   getPrime=. ((*&0)`(*&1)@.(1&p:))"0 NB. If not prime returns 0, if prime
returns original number.
   getPrime 17 18 19
17 0 19

"Best" is a judgement and depends on the situation and person making it. I
like:

   sum_primes=:3 : '+/p:i.p:^:_1 y'
   sum_primes 20
77


On Tue, Apr 29, 2014 at 9:22 AM, Jon Hough <[email protected]> wrote:

> This question comes in two parts.
> Statement of problem I am trying to solve:
> Get the sum of primes less than a given number.
> Question (1):What is the best way to do this?
> What I am attempting now is to use gerunds and the p: verb.Essentially I
> want to add all the numbers in an array if they are primes.
> This is what I have so far:
> getPrime=. (*&0)`(*&1)@.(1&p:) NB. If not prime returns 0, if prime
> returns original number.
> I will then +/ through the returned array.getPrime works for a single
> number. But whenever I try to use a 1-d array as the noun I get a "rank
> error".I am not sure how to fix this.
> Question (2): How do I fix the above error? Even if my method is not a
> very good way to solve the original problem I would still like to know why
> I doesn't work.
> Regards.
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to