Proving that I am still baffled by J! Elijah has a different way to convert a number to its digits than I normally use, so I set out to compare..
digitsE=:10&#.^:_1 NB. Elijah's convert to digits digitsR=:"."0": NB. My convert to digits (digitsE-:digitsR) 357686312646216567629137x 1 NB. Well that's alright! digitsE 357686312646216567629137x 3 5 7 6 8 6 3 1 2 6 4 6 2 1 6 5 6 7 6 2 9 1 3 7 digitsR 357686312646216567629137x 3 5 7 6 8 6 3 1 2 6 4 6 2 1 6 5 6 7 6 2 9 1 3 7 NB. Still looking good! NB. Set up truncs with Elijah's routine.. truncs=. [:~. [:10&#.\. digitsE NB. Works perfectly! :o) truncs 357686312646216567629137x 357686312646216567629137 ...etc 1 p: truncs 357686312646216567629137x 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 NB. Perfect! NB. Set up truncs with my routine.. truncs=. [:~. [:10&#.\. digitsR NB. Should be the same??? truncs 357686312646216567629137x 3.57686e23 5.76863e22... WRONG!!! :o( > On 19 Nov 2022, at 22:04, Elijah Stone <elro...@elronnd.net> wrote: > > x: ". y where y is simply a string of digits will interpret those digits as > a (fixed-width) integer and _then_ convert the latter to extended-precision. > You could append an 'x', or perhaps consider the following definition: > > truncs=. [:~. [:10&#.\. 10&#.^:_1 NB.equivalent to ltrunc^:a: > ,.truncs 357686312646216567629137x > 357686312646216567629137 > 57686312646216567629137 > 7686312646216567629137 > 686312646216567629137 > 86312646216567629137 > 6312646216567629137 > 312646216567629137 > 12646216567629137 > 2646216567629137 > 646216567629137 > 46216567629137 > 6216567629137 > 216567629137 > 16567629137 > 6567629137 > 567629137 > 67629137 > 7629137 > 629137 > 29137 > 9137 > 137 > 37 > 7 > >> On Sat, 19 Nov 2022, Richard Donovan wrote: >> >> Hi >> >> I am doing experiments with large primes, in particular looking at primes >> that remain primes when n digits are truncated from the left. For example >> 6391373 391373 91373 1373 373 73 3 remains prime at each >> step. >> >> The largest of these in base 10 is 357686312646216567629137. >> >> I wrote the following code in preparation for further investigation but I >> find that the 24 digit number above is not handled as I wish it to be, as >> you will see below. >> >> What have I missed? >> >> Thanks >> >> >> >> >> digits >> "."0@": >> >> ltrunc >> 3 : 0"0 0 0 >> n=: ": 0, }. digits y >> x: ". n-. ' ' >> ) >> >> >> >> NB. Works fine with 7 digit number... >> ltrunc^:a: 6391373 >> 6391373 391373 91373 1373 373 73 3 0 >> >> >> NB. But I can’t get it working for a 24 digit number! >> ltrunc 357686312646216567629137 >> 0 0 5 7 6 8 6 0 2 3 >> ltrunc 357686312646216567629137x >> 57686312646216568012800 >> ltrunc x:357686312646216567629137x >> 57686312646216568012800 >> >> Is there a way around the limit? >> >> ---------------------------------------------------------------------- >> 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