q: 729
3 3 3 3 3 3


__ q: 729

3
6

a perfect square will have __&q: return even numbers for the 2nd row.



On Sunday, May 17, 2020, 09:32:04 p.m. EDT, Hauke Rehr <[email protected]> 
wrote: 





First, Skip already mentioned that. His posts are about J’s behaviour.
Second, your reasoning is flawed.
*/ 3 ^ i.4 includes non-square factors and is a perfect square.
Think about prime numbers and their distribution,
and you’ll get a valid answer.

Am 18.05.20 um 03:22 schrieb 'Pascal Jasmin' via Programming:
> Searching for perfect squares is best done by squaring the next integer.  The 
> first 1000 perfect squares are *: >: i.1000  No factorial number is a perfect 
> square because it includes a non-square factors.
> 
> 
> 
> 
> 
> 
> On Sunday, May 17, 2020, 09:08:15 p.m. EDT, Skip Cave 
> <[email protected]> wrote:
> 
> 
> 
> 
> 
> Roger,
> 
> I don't understand your last post.  I'm trying to find a way to search for
> perfect squares.
> 
> For smaller integers the plan is easy.
> 1. Generate a list of integers (eg. 1 to 30):
>    ]n=.>:i.30
> 
> 2. Take the square root of each one (%:)
>      %:n
> 
> 1 1.4142 1.7321 2 2.2361 2.4495 2.6458 2.8284 3 3.1623 3.3166 3.4641 3.6056
> 3.7417 3.873 4 4.1231 4.2426 4.3589 4.4721 4.5826 4.6904 4.7958 4.899 5
> 5.099 5.1962 5.2915 5.3852 5.4772
> 
> 
> 3. Find and mark the square roots of n that are integers (=>.)
> 
> (=>.)%:n
> 
> 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0
> 
> 
> 4. Use the marks to select the integers in n that are perfect squares (n#~):
> 
> n#~(=>.)%:n
> 
> 1 4 9 16 25
> 
> 
> So we are able to find the perfect squares in the range 1 to 30.
> 
> 
> Now I want to find the perfect squares in the range of factorial 1 to 30:
> 
> Actually I know that factorials of integers *can't* have square roots
> (except !1), but I want to check. See https://bit.ly/3fXevkr
> 
> 
> So we generate the factorials of the integers 1 to 30 and store them in n:
> 
> ]n=.!>:i.30x
> 
> 1 2 6 24 120 720 5040 40320 362880 3628800 39916800 479001600 6227020800
> 87178291200 1307674368000 20922789888000 355687428096000 6402373705728000
> 121645100408832000 2432902008176640000 51090942171709440000
> 1124000727777607680000 25852016738884976640000 620448401733239439360000
> 15511210043330985984000000 403291461126605635584000000
> 10888869450418352160768000000 304888344611713860501504000000
> 8841761993739701954543616000000 265252859812191058636308480000000
> 
> 
> Now take the square roots of those 30 factorials, then find & mark any of
> the square roots that are integers. We know that only the first square root
> (%:!1) should be an integer, since 1 is a perfect square. all the square
> roots of the other factorials should not be integers, as they are not
> perfect squares.
> 
> 
> (=>.)%:n
> 
> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
> 
> Uh oh! J is telling me that factorials of the last 5 integers (n=.26 27 28
> 29 30) are perfect squares! This is clearly not true. Roger showed this in
> his response to me, but he didn't propose a solution.
> 
> 
> How can I take the square root of large integers such as !26 27 28 29 30 in
> J, and get an accurate floating point or rational number?
> 
> 
> Skip Cave
> 
> 
> 
> On Sun, May 17, 2020 at 4:18 PM Roger Hui <[email protected]> wrote:
> 
>> Use <.@%:
>>
>>      s=: <.@%: !26x
>>      s
>> 20082117944245
>>      s*s
>> 403291461126567024928620025
>>      !26x
>> 403291461126605635584000000
>>
>>
>> On Sun, May 17, 2020 at 2:00 PM Skip Cave <[email protected]> wrote:
>>
>>> We can find perfect squares in a list by taking the square root (%:) of a
>>> number, and checking to see if it is an integer:
>>>
>>> * n#~(=>.)%:n=.>:i.30*
>>>
>>> *1 4 9 16 25*
>>>
>>>
>>> Now we can try larger integers by taking the square root of the factorial
>>> of some small integers:
>>>
>>> * n#~(=>.)%:!n=.>:i.30*
>>>
>>> *1 26 27 28 29 30*
>>>
>>>
>>> Hmm. This says that !26 and up, are perfect squares.
>>>
>>> * !26x*
>>>
>>> *403291461126605635584000000*
>>>
>>> * %:!26x*
>>>
>>> *20082117944246*
>>>
>>>
>>> Well it looks like %:!26x is an integer, making !26x a perfect square.
>>> Let's check:
>>>
>>> * 20082117944246x^2*
>>>
>>> *403291461126607189164508516*
>>>
>>> * !26x*
>>>
>>> *403291461126605635584000000*
>>>
>>>
>>>    *  (!26x)-:20082117944246x^2 *
>>> *0*
>>> Clearly, !26x is not a perfect square.
>>>
>>> Looks like J has precision issues with the square root of large extended
>>> integers. How can I fix this, to find accurate square roots of large
>>> integers?
>>>
>>> Skip Cave
>>> ----------------------------------------------------------------------
>>> 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
> 

-- 
----------------------
mail written using NEO
neo-layout.org


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

Reply via email to