HP 39gii Tutorial: REPEAT and WHILE
#1

http://edspi31415.blogspot.com/2013/03/hp-39gii-programming-part-4-repeat-and.html?m=1

#2

Hi Eddie

here is an improved version of your SQFACTOR program :

EXPORT SQFACTOR(N)
BEGIN
LOCAL C,K,S;
C:=1;
K:=FLOOR(VN); // V for square root symbol
WHILE K > 1 DO
WHILE FRAC(N/K²) == 0 DO
N:=N/K²;
C:=C*K;
END;
K:=K-1;
END;
S:="";
IF C<>1 THEN S:=string(C);END;
IF N<>1 THEN S:=S+"V"+string(N); END;
RETURN S;
END;

So SQFACTOR(400) returns "20" and not "4 &#8730; 25"


Edited: 19 Mar 2013, 7:26 a.m.

#3

Thanks Giles! I am going to test this out

#4

Here is an interesting program by C.RET posted on silicium.org


EXPORT RAC(X)
BEGIN
LOCAL F:=SIGN(X), R:=ABS(X);
LOCAL I:=1,Txt:="V("+X+")=";

REPEAT
IF R MOD I*I
THEN I:=I-1;
ELSE F:=F*I; R:=R/I/I; I:=FLOOR(VR);
END;
UNTIL I<2;

IF (ABS(F)<>1) OR (R=F) THEN Txt:=Txt+ABS(F) END;
IF F<0 THEN Txt:=Txt+" i " END;
IF R<>1 THEN Txt:=Txt+"V"+R END;
RETURN Txt;
END;

Change V by square root symbol
it works also with negative numbers :

#5

I did not know we could initialize and localize variables in one step. This will make things more efficient.

Gilles, is it OK if I post your program in my next blog entry? Credit will be given.

Eddie

#6

Hi Eddie, this program is not by me, but by C.RET.

#7

Eddie you are welcome.

No problem at all, I consider this code has already fallen into the public domain since I posted it this public forum. It was the result of a kid of brain storm threat. Several people were involved in the discussion. Gilles is one of them.

Please feel free to publish it, as soon as you are kind enough to indicate references of the peoples and the Silicium.org forum.

www.silicium.org/forum
[hp39gII] Simplificateur de racines carrées
([hp39gii] A Square Roots Simplicator)

The HP-39gii is really an amazing system. Every day, we discover new capabilities; the localization and initialization in one shot is one of its numerous features.

The Silicium.org forum is really active, we already analyze this first version of the code and turn it into two new versions :

EXPORT RAC(X)
BEGIN
LOCAL F:=SIGN(X), R:=ABS(X);
LOCAL I:=1,Txt:="¡Ì("+X+")=";

REPEAT
IF R MOD I*I
THEN I:=prevprime(I);
ELSE F:=F*I; R:=R/I/I; I:=FLOOR(¡ÌR);
END;
UNTIL Q<2;

IF (ABS(F)<>1) OR (R=F) THEN Txt:=Txt+ABS(F) END;
IF F<0 THEN Txt:=Txt+" i " END;
IF R<>1 THEN Txt:=Txt+" \V"+R END;
RETURN Txt;
END;

The only change is prevprime(I) replacing I:=I-1; expecting speed-up with large numbers.

The last version, is quite more different, it is using the built-in function ifactors that returns the list of prime factors (and multiplicity). This last version has the shortest/fastest look-up loop !

EXPORT RAC( X )
BEGIN
LOCAL F:=SIGN(X),R:=ABS(X);
LOCAL p,I,T:="¡Ì("+X+")=";

LOCAL LF:=ifactors(R);

FOR p FROM 2 TO SIZE(LF) STEP 2 DO
I:=LF(p-1)^FLOOR(LF(p)/2);
F:=F*I; R:=R/I/I;
END;

IF (ABS(F)<>1) OR (R=F) THEN T:=T+ABS(F) END;
IF F<0 THEN T:=T+" i " END;
IF R<>1 THEN T:=T+" \V"+R END;
RETURN T;
END;


Edited: 20 Mar 2013, 6:40 p.m.



Possibly Related Threads…
Thread Author Replies Views Last Post
  HP Prime Tutorial #6 and #7: Drawing Eddie W. Shore 2 1,864 12-10-2013, 08:16 AM
Last Post: Eddie W. Shore
  Gathering USB dumps for Connectivity Kit <-> 39gII communication... debrouxl 2 1,630 12-01-2013, 12:59 PM
Last Post: Marcus von Cube, Germany
  New firmware for HP 39gII Mic 6 2,776 11-26-2013, 06:23 PM
Last Post: DeboT
  HP Prime Tutorial #4 is up (CASE/CHOOSE/INPUT) Eddie W. Shore 1 1,278 11-15-2013, 07:32 AM
Last Post: Davi Ribeiro de Oliveira
  HP Prime Programming Tutorial #3: WHILE, INPUT, KILL, REPEAT, GETKEY Eddie W. Shore 5 2,304 11-07-2013, 12:25 AM
Last Post: Han
  HP Prime Programming Tutorial #1: LOCAL, RETURN Eddie W. Shore 6 2,944 10-26-2013, 08:42 PM
Last Post: Miguel Toro
  HP Prime Programming Tutorial #2: MSGBOX, IF-THEN-ELSE, PRINT, FOR Eddie W. Shore 0 1,230 10-26-2013, 03:51 PM
Last Post: Eddie W. Shore
  HP Prime vs. 39gII Connectivity Kit Marcus von Cube, Germany 3 1,700 10-09-2013, 05:44 PM
Last Post: Marcus von Cube, Germany
  [HP 39Gii] - Bug report Jean-Michel 1 1,588 08-28-2013, 10:53 AM
Last Post: Tim Wessman
  hp 39gii lcd clear question giancarlo 7 2,637 08-18-2013, 07:30 AM
Last Post: Mic

Forum Jump: