I've come up with a very efficient way of finding if a number is prime, using TI-BASIC for use with TI-83/84/+/SE calculators. I am trying to optimize it however possible.
:Input "NUMBER: ",A
:If A<2 or fPart(A
:Then
:Disp "INVALID INPUT"
:Stop
:End
:0→B
:2→I
:While I<A and not(B
:If 0=fPart(A/I
:1→B
:I+2→I
:If I=4
:3→I
:End
:If B
:Disp "NOT"
:Disp "PRIME"
A few notes:
- Lines 2-6 are for validating input, and don't affect the effectiveness of the program.
- The closing
"
s on line 4 and the last two lines are not necessary, but I added them so the syntax would highlight nicely here. - Lines 12-14 are for speeding up the loop doubly; instead of incrementing by
1
each time, it is by2
, with theIf
to offset the4
to3
on the first run. - The
not(B
was very efficient, to end the loop whenever a match to identify the number as a composite number is found.