Calculating the sum of a *lot* of primes

Peter M. Brigham pmbrig at gmail.com
Wed Nov 11 07:34:29 EST 2015


There may be other factors more important for speed, but one thing is to avoid having to access the contents of a field 1.5 billion times, by putting fld 1 into a variable, say "maxNbr", and then doing

repeat until i > maxNbr…

-- Peter

Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig


On Nov 11, 2015, at 2:45 AM, Geoff Canyon wrote:

> I'm playing with a challenge to calculate the sum of the primes less than
> 3,000,000,000
> 
> So far I have this, which gets the job done for the primes up to about a
> billion, but then dies (the whole app) without even a dialog. It's also not
> very fast. It would probably take an hour or two to finish.
> 
> Any suggestions for efficiency or non-crashed-ness?
> 
> function bAdd x,y
> -- adds two positive numbers of arbitrary length
>   put 0 into c
>   repeat with i = 14 to max(length(x),length(y))
>      add char -i to 13 - i of x + char -i to 13 - i of y to c
>      put char -14 to -1 of c before r
>      delete char -14 to -1 of c
>   end repeat
>   return c & r
> end bAdd
> 
> on mouseUp
>   put 2 into T
>   put 0 into S
>   put 3 into i
>   repeat until i > fld 1 -- fld 1 contains 3000000000
>      if P[i] is empty then
>         put bAdd(i,T) into T
>         put i & comma after P[i*3]
>      else
>         repeat for each item x in P[i]
>            put x & comma after P[i + x + x]
>         end repeat
>         delete P[i]
>      end if
>      if the seconds > S then
>         put the seconds into S
>         put i && T into fld 2
>         unlock screen
>         lock screen
>      end if
>      add 2 to i
>   end repeat
>   put i && T into fld 2
> end mouseUp
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list