Re: Changing Pure Function in Module

*To*: mathgroup at smc.vnet.net*Subject*: [mg29842] Re: [mg29822] Changing Pure Function in Module*From*: Ranko Bojanic <bojanic at math.ohio-state.edu>*Date*: Fri, 13 Jul 2001 04:19:22 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Hi Wilson: Now that we know exactly what you want, it is easy to write a module for FindD: FindD[n_]:=Module[{c=1,a},If[IntegerQ[Sqrt[n]],a="n is a perfect square", While[JacobiSymbol[(-1)^(c+1)(2c+3),n]?-1,c=c+1]; a=(-1)^(c+1)(2c+3)]; Return[a]] FindD[1929321] n is a perfect square FindD[567134594567891251143216731] -15 Regards, Ranko In Message 42/124 From Flip at safebunch.com Jul 12,01 02:52:35 AM-0400 Wilson wrote: > Hi All, > > thank you to all who continue to respond to all of my questions ... and there > are always plenty of them. > > I have the following function embedded in the findD code below. > > a[1] =5; > > a[n_]:= a[n] = (-1)^(n+1) (Abs[a[n-1]]+2) > > In[225]:= > findD[n_]:= > Module[{c=0},NestWhile[(c++;(-1)^c(Abs[#]+2))&,5,JacobiSymbol[#,n]!=-1&]] > > I would like to change the pure function to use the following (cleaner) function > that requires no starting value (and starts for n = 1). > > In[255]:= > a[n_]:= a[n]= (-1)^(n+1)*(2n + 3) > > Also, it would be important to test n prior to calling findD. If n is a perfect > square, findD will "never" converge. Is there a simple way to test if n is > square and tell the user ... try again ... n is a perfect square. > > Again thank you for all of the help ... Wilson > > >