Sorry not to be clear.

I'd come across a Python function to calculate primepi and/or sum of primes. I translated it into c, J and Pari GP with the sorts of performance times indicated.
The method rests on these properties:
     N(v,p) = N(v,p-1) - (N(v/p, p-1) - N(p-1,p-1))
     S(v,p) = S(v,p-1) -  p(S(v/p, p-1) - S(p-1,p-1))
where N(v,m) (S(v,m)) is the number (sum) of integers in [2,v] that remain after
sieving by all primes smaller than or equal to m .
The implementation is clever in that it doesn't need to explicitly include all integers
in the sieve,  but instead uses a couple of arrays of size ~ root(n).

My Lehmer effort is based on Weisstein's description in Wolfram World, and is
MUCH more complicated and less J-like than what I chose to call primepi.

FYI, I've just rediscovered my note to self on the apparent error in Weisstein's
description:
"  NB. Line 1 is wrong; the limits on i,j should read 1<=i<j<=a  "
(ie _not_  1<=i<=j<=a )


OK?


Mike

PS - sorry that table of (very approx) timings displayed poorly for you.


On 23/03/2016 13:33, 'Jon Hough' via Chat wrote:
Sorry, I'm confused, what's the difference between primepi and lehmer?

Anyway, it seems your J Lehmer implementation calculates pi(1e9) in ~2 seconds.
That doesn't seem bad. I mean it's usable.
--------------------------------------------
On Tue, 3/22/16, Mike Day <[email protected]> wrote:

  Subject: Re: [Jchat] primes
  To: [email protected]
  Date: Tuesday, March 22, 2016, 7:32 PM
fwiw, I messed around
  with primepi(n) and sum-of-primes-to(n) a few months
  ago.  (Sum of primes can be dealt with in a
  similar fashion to
  primepi).  Lehmer
  didn't perform well in my attempts to apply
  it.   The Wolfram page on
  Lehmer
  used to have an error in
  one of the summations,  so take care if using
  http://mathworld.wolfram.com/LehmersFormula.html
  (I'm sorry but I can't see if it's
  still wrong right now. Weisstein didn't
  acknowledge an attempt to report the problem,
  and I naven't retained a
  copy of
  my message.)
Timings for primepi(n), on a previous
  laptop:
  +------+----------+-------+-------+--------+-----+-----+-----+----+------+
  |Times |n=        |1000000|1e7    |1e8
     |1e9  |1e10 |1e11 |1e12|1e13  |
  +------+----------+-------+-------+--------+-----+-----+-----+----+------+
  |c++~  |primepi   |1ms    |5ms
    |14ms    |150ms|1.1s |9.4s |86s |13m05s|
  +------+----------+-------+-------+--------+-----+-----+-----+----+------+
  |J     |primepi   |1ms
    |6ms    |20ms    |62ms |3.4s |16.6s|92s |8m15s |
  +------+----------+-------+-------+--------+-----+-----+-----+----+------+
  |J     |Lehmer    |4ms
  |22ms   |190ms   |2.2s |8m23s|....
  |....|....  |
  +------+----------+-------+-------+--------+-----+-----+-----+----+------+
  |PariGP|my-primepi|100ms  |616ms  |4.4s
  |34.6s|4m27s|.... |....|....  |
  +------+----------+-------+-------+--------+-----+-----+-----+----+------+
  |PariGP|built-in
  |0.004ms|0.327ms|0.0011ms|104ms|27.8s|.... |....|....  |
  +------+----------+-------+-------+--------+-----+-----+-----+----+------+
(Apologies if this doesn't
  display well - I've tried!)
On the present laptop, with an amd chip:
  _1 p: <.1e8
5761455 timer'{.{:primepi <.1e8' +---------+-------+ |0.0179977|5761455| +---------+-------+ _1 p:
  <.1e10
|limit error | _1 p:<.10000000000 timer'{.{:primepi <.1e10' +-----+---------+ |3.857|455052511| +-----+---------+ As the
  comparisons above demonstrate, my attempt at coding Lehmer
  in J
  performed poorly.   I code c
  and c++ very naively,  not knowing them well,
  so it's not surprising that J outperforms
  my c++ effort for larger n.
  The first row of
  the Pari GP times are for my attempt at translating my
  J function into its script.  Pari GP's
  built-in primpi function has is
  very fast
  for lower n,  but degrades sharply for larger values. It
  might be
  relevant that I initialise GP with
  parisize = 8000000, primelimit =
  4270000000
The
  downside,  as others have said, is that an efficient
  primepi
  function does
  NOT
  scan all primes on its way to counting or summing them!
Code available if
  interested.
Mike On 22/03/2016 00:31, 'Jon
  Hough' via Chat wrote:
  > Since p: has
  a limit (why is that, by the way? I have written a pi(x)
  function using Miessel's formula in another language and
  it does grind to a slowdown for values much larger than 1e7,
  so that might be the reason. I'm assuming internally J
  uses Miessel or Lehmer's formula.),
  >
  it might be better to "cheat" and just use a
  hardcoded value for pi(1e9).
  >
  > https://primes.utm.edu/howmany.html
  (scroll down to table 1)
  >
  >
  > Also, possibly the
  worst idea ever, why not iterate from 2 to 1e9 and do prime
  tests and keep a record of the previously found prime to
  compare the final digits with the next prime, and keep a
  record of the comparisons. Probably hopelessly slow, and
  inefficient.
  >
  >
  --------------------------------------------
  > On Tue, 3/22/16, Raul Miller <[email protected]>
  wrote:
  >
  >   Subject: Re: [Jchat]
  primes
  >   To: "Chat
  forum" <[email protected]>
  >   Date: Tuesday, March 22,
  2016, 12:14 AM
  >
  >   Oh, I coded wrong. The
  >   limit error was from p:, but
  I should not have been
  >   feeding it the value 1e9.
  >
  >   Sometimes I wonder how I get
  anything
  >   done...
  >
  >   Thanks,
  >
  >   --
  >   Raul
  >
  >
  >   On Mon, Mar
  >   21, 2016 at 11:03 AM, Roger
  Hui <[email protected]>
  >   wrote:
  >
  >   >
  >   > it should be
  straightforward to do the extra credit
  >   problem
  >   >
  >   > I should
  >   have checked.  The extra
  credit problem is for 100,000,000
  >   primes.
  >   >
  >   >    _1 p:
  >   _1+2^31
  >   > 105097564
  >   >    p: 1e8
  >   >
  >   2038074751
  >   >
  >   > So the
  >   limit error is not in p: .
  >   >
  >   >
  >   >
  >   >
  >   >
  >   >
  >   > On Sun, Mar 20, 2016
  >   at 4:44 PM, Raul Miller
  <[email protected]>
  >   > wrote:
  >   >
  >   > > Rosettacode has a
  task now, for this
  >   item.
  >   > >
  >   > > http://rosettacode.org/wiki/Prime_conspiracy#J
  >   > >
  >   > > And,
  >   hypothetically speaking, it
  should be straightforward to do
  >   the
  >   > extra
  >   > >
  >   credit problem. But that
  doesn't work. Given:
  >   > >
  >   > > dgpairs=: 2
  >   (,'->',])&":/\
  10 | p:
  >   > >
  combine=: ~.@[ ,.~ ' ',.~
  >   ":@,.@(+//.)
  >   > >
  >   > > We can try this:
  >   >
  >   >
  >   > >    /:~
  combine&;/|:
  >   (~.;#/.~)@dgpairs@((+
  i.)/)"1
  >   > >
  >   (1e6*i.1e3),.1e6+999>i.1e3
  >   > >
  >   > > |limit error:
  dgpairs
  >   > >
  >   > > ... but p:
  >   doesn't work for values
  like 1e9 (1 p: works, but not
  >   p:
  >   > > itself).
  >   >
  >   >
  >   > > And, for example,
  Roger has
  >   worked out some
  ways of dealing with large
  >   > > primes -- see
  looking at
  >   > > http://code.jsoftware.com/wiki/Essays/Primality_Tests
  >   -- but we don't
  >   > have
  >   > > anything that's
  a drop in
  >   replacement for
  the p: monad.
  >   > >
  >   > > So this presents
  something of a
  >   problem -
  how would we tackle a problem
  >   >
  >   > like this?
  >   > >
  >   > > (Please feel free
  to change forum to
  >   programming if you've got
  working
  >   >
  >   code
  >   > > rather than just
  >   ideas...).
  >   > >
  >   >
  >   > Thanks,
  >   > >
  >   >
  >   > --
  >   > > Raul
  >   >
  >   >
  >   > >
  >   > >
  >   > >
  >   > > On Tue, Mar
  >   15, 2016 at 7:02 AM, Cliff
  Reiter <[email protected]>
  >   > > wrote:
  >   > >
  >   > > > A look at the
  frequencies of
  >   pairs of
  last digits of successive primes:
  >   > > >
  >   /:~({.,#)/.~2]\10|p:4+i.1e7
  >   > >
  >   >
  >   > > > 1 1 446808
  >   > > >
  >   > > > 1
  >   3 756071
  >   > > >
  >   >
  >   > > 1 7 769924
  >   > > >
  >   > > > 1 9 526953
  >   >
  >   > >
  >   > > > 3 1 593196
  >   > > >
  >   > > > 3
  >   3 422302
  >   > > >
  >   >
  >   > > 3 7 714795
  >   > > >
  >   > > > 3 9 769915
  >   >
  >   > >
  >   > > > 7 1 639383
  >   > > >
  >   > > > 7
  >   3 681759
  >   > > >
  >   >
  >   > > 7 7 422289
  >   > > >
  >   > > > 7 9 756852
  >   >
  >   > >
  >   > > > 9 1 820369
  >   > > >
  >   > > > 9
  >   3 640076
  >   > > >
  >   >
  >   > > 9 7 593275
  >   > > >
  >   > > > 9 9 446032
  >   >
  >   > >
  >   > > > The 1 follows
  1 as
  >   rare as 9 follows 9,
  but rarer is 3 follows 3 as
  >   > rare
  >   > > > as 7
  >   follows 7. 9 1 most popular!
  Very curious. Probably should
  >   move to
  >   > > > JProg'
  Best,
  >   Cliff
  >   > > >
  >   >
  >   > >
  >   > > >
  >   > > >
  >   > > >
  >   On 3/14/2016 12:03 PM, R.E.
  Boss wrote:
  >   >
  >   > >
  >   > > >>
  >   > > >>
  >   > >
  >   > 
https://www.quantamagazine.org/20160313-mathematicians-discover-prime-conspiracy/
  >   > > >> R.E.
  Boss
  >   > > >>
  >   ----------------------------------------------------------------------
  >   > > For
  >   > >
  >   >> information about J
  forums see http://www.jsoftware.com/forums.htm
  >   >
  >   > >>
  >   > > >
  >   > > >
  >   ----------------------------------------------------------------------
  >   > > > For
  information about J forums
  >   see http://www.jsoftware.com/forums.htm
  >   > > >
  >   > >
  >   ----------------------------------------------------------------------
  >   > > For information
  about J forums see http://www.jsoftware.com/forums.htm
  >   > >
  >   >
  >   ----------------------------------------------------------------------
  >   > For information about J
  forums see http://www.jsoftware.com/forums.htm
  >   >
  >   ----------------------------------------------------------------------
  >   For information about J
  forums see http://www.jsoftware.com/forums.htm
  >
  ----------------------------------------------------------------------
  > For information about J forums see http://www.jsoftware.com/forums.htm
---
  This email has been checked for viruses by
  Avast antivirus software.
  https://www.avast.com/antivirus
----------------------------------------------------------------------
  For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to