BC number theory programs
BC (version 1.06) (see the manual) is a programming language that supports arbitrary precision integer arithmetic calculations with interactive execution of statements.
It is an idiosyncratic programming language which closely resembles parts
of the C language. While it is somewhat slow for some purposes (all code is
executed as it is read), the author has found bc very useful in
teaching and research. The code is very easy to read and students can see
directly how an algorithm has been implemented. It is also useful as a template
for harder-to-write, but faster C code.
bc-1.06 is a superior version of the basic bc program which comes with the UNIX operating system.
To run a bc program such as gcd below, type bc gcd.
This loads the bc program and the bc program gcd.
As a calculator, bc has a number of standard operations:
5+3, 5*3, 5/3, (=integer part), 5%3, (=least remainder), 5^3, sqrt(n).
global array variables can be entered: m=5;m=3;m=7
Typing z=lcma(m[ ],3) and then z, prints and stores z, the
lcm of 5, 3 and 7.
Consult the bc manual for more information.
Bugs and idiosyncrasies:
- When using the if-else construction, insert a "\", as follows:
Alternatively, as pointed out by Anton Stiglic, use the construction
- There was a bug in BC 1.06 under some Solaris platforms, which causes my program squareroot below to give a bus error, though not under linux.
- There can be a problem with number of auto variables allowed in a bc function in BC 1.06. (This arose recently on my Imac, when after updating the OS to Snow Leopard, I was getting an Abort Trap error message.) The auto variables appear to be accounted for internally together with all other variables, so the only limitation is the total number of names in the whole program. This is shown by the command limits which is 32767 on some systems. I had no problem with BC 1.06.95.
- The continue statement only works for for loops.
- Alan Offer has pointed out that f(*b) changes the array values.
Last modified 26th January 2016