NB. written by K.Morisawa 05/dec/2009 NB. find nub number nobun1=: 3 : 0 NB. Usage: nobun1 4x 1000000x t1=: 6!:0 '' k=: {. y m=: {: y km=: 0 while. k<:m do. j=: *: k a=: ": j b=: ~. a c=: /: b d=: c { b e=:(": 0) e. d NB. 0 が含まれたら 1 No なら 0 f=: #b if. e = 0 do. if. f=2 do. km=:km,k,j end. end. KM=:k k=:k+1 end. g=:# km=:}. km km=:((g%2),2) $ km t2=: 6!:0 '' t=:'計算時間(秒)=',": +/ 0 0 86400 3600 60 1 * t2-t1 km=:": km t,km ) NB. Answer is thus NB. 4 16 NB. 5 25 NB. 6 36 NB. ............. NB. 3114 9696996 NB. 81619 6661661161 NB.Alternative solution by M.Shimura NB. find nub-number NB. usage: nub2 i. 10000x NB. usage: nub_all 10000000 NB. ----------------- take_2=: 3 : '((;#&~.& ": L:0 {@> *: y)e. 2)# *: y' except_0=: 3 : '(-. 0 = ;". L:0 {: L:0 ": L:0 {@>y ) # y' nub2=: 3 : '(%: tmp),. tmp=.except_0@take_2 y' NB. ----------------------------------------- NB. avoid memory over/divide few steps NB. for longtime run !! NB. usage: nub_all 1000000000 wr=: 1 !:2&2 nub_all=: 3 : 0 num2=. 100000 * i. num=. y%100000 for_ctr. i. num do. wr nub2 (ctr{ num2)+i.100000x end. )