IMO we should interpret the intersection and the union of two (multi)sets (sets 
X with X >:&# ~.X) in the same way as is done by the GCD and the LCM of two 
numbers.
So for two numbers N and M with (multi)sets of primefactors A and B, we should 
have (N +. M) = */(A IS B) and (N *. M) = */ (A UN B), with IS=intersection and 
UN = union of the (multi)sets A and B.
Obviously we require (A IS B) =&(/:~) B IS A  and also (A UN B) =&(/:~) B UN A 
for all (multi)sets A and B.
E.g.
    1 2 3 3 3 IS 3 3 3 3 3 4 5 6
3 3 3
    1 2 3 3 3 UN 3 3 3 3 3 4 5 6
1 2 3 3 3 3 3 4 5 6

What are elegant and efficient J-definitions for IS and UN?


I have constructed 
   UN_reb=: ([:(~.@{.#~ {. >.//.{:) |:@,&(({.,#)/.~))
and 
   IS_reb=: ([:(~.@{.#~ {. <.//.{:)  ([|:@, ],~ 0,.~ -.~&:({."1), 
-.&:({."1))&(({. , #)/.~))

   1 2 3 3 3 UN_reb 3 3 3 3 3 4 5 6
1 2 3 3 3 3 3 4 5 6
   1 2 3 3 3 IS_reb  3 3 3 3 3 4 5 6
3 3 3
      1 2 3 3 3 UN_reb~ 3 3 3 3 3 4 5 6
3 3 3 3 3 4 5 6 1 2
      1 2 3 3 3 IS_reb~ 3 3 3 3 3 4 5 6
3 3 3

   a=: 1e7?.@#1e6
   ts'a UN_reb a+499999'
0.76631908 4.6996013e8
   #a UN_reb a+49999
12186812
   ts'a IS_reb a+499999'
0.76073743 3.3554592e8
   #a IS_reb a+49999
7813188


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

Reply via email to