Elementary Number Theory on the TI Calculator


Contents

  1. General
  2. Basic Operations
  3. GCD
  4. Exponentiation - PowMod
  5. Finding Primes - The Sieve of Eratosthenes
  6. Factoring - Pollard Rho
  7. Computing the Order of Integers

General

Texas Instruments sells a line of programmable hand calculators with a simple programming language which is, at a simple level, compatible between calculator models. These programs have been written on a TI-86 and will be tested on models back to the TI-82 when I get the chance.

The TI series of calculators runs on a variant of the old Zilog Z80 processor and supports computations with integers as large as 246. (The display will not display integers this large, converting them to floating point for display, but some simple experiments seems to show that the internal representation is still faithful.) This means that the largest numbers which can be used in these algorithms is 223=8388608.

A more thorough description of the TI8x and its use in basic number theory is here.

Basic Operations

The basic arithmetic operations, +, -, /, are available from the keyboard. The factorial operation, n!, is available from the [PROB] submenu of the [MATH] menu.

The modular reduction operator can either be typed in directly from the keyboard: MOD(37,5) (case is not important), or found in the [NUM] submenu of the [MATH] menu.

GCD

GCD is a built-in function and can either be typed in directly from the keyboard: GCD(37,5) (case is not important), or found in the [MISC] submenu of the [MATH] menu.

An extended GCD algorithm can be implemented with the following program.

Input "N ",N
Input "M ",M
[1,0]->L1
[0,1]->L2
Repeat (N==0)
int(M/N)->QUOT
mod(M,N)->M
L2-QUOT*L1->L2
If (M==0)
Goto XGCDEnd
int (N/M)->QUOT mod(N,M)->N
L1-QUOT*L2->L1
End
M->N
L2->L1
Lbl XGCDEnd
Disp N,L1

Exponentiation - PowMod

The Russian Peasant method for modular exponentiation can be implemented with the following program:

Input "Modulus ",MD
Input "Element ",ELT
Input "Power ",POW
1->ACC
Repeat (POW==0)
If (mod(POW,2)==1)
mod(ELT*ACC,MD)->ACC
mod(ELT^2,MD)->ELT
iPart (POW/2)->POW
End
Disp ACC

Finding Primes - The Sieve of Eratosthenes

The Sieve of Eratosthenes for finding successive primes can be implemented with the following program. The program sieves over the first 255 odd numbers, printing out the primes.

255 -> LNSV
LNSV -> dim(SEIV)
For(I,1,LNSV)
If (SEIV(I)==0)
Then
Disp 2*I+1
For(J,K,LNSV,2*I+1)
1 -> SEIV(J)
End
End
End
DelVar(SEIV)

Factoring - Pollard Rho

The Pollard Rho method for factorization can be implemented with the following program:

Input "Number ",MD
2->R1
5->R2
1->FACT
Repeat (FACT!=1)
mod(R1^2+1,MD)->R1
mod(R2^2+1,MD)->R2
mod(R2^2+1,MD)->R2
gcd(abs(R1-R2),MD)->FACT
End
Disp FACT

Computing the Order of Integers

The order of an integer in the group of units mod some other integer (ie the smallest exponent e such that be(mod N)=1) can be computed with the following program:

Input "Modulus ",MD
Input "Element ",ELT
1 -> ORD
ELT -> ACC
Repeat (ACC==1)
mod(ELT*ACC,MD) -> ACC
ORD+1 -> ORD
End
Disp ORD

Robert Campbell
Last modified: Dec 20, 1997