Language operator MOD

20  a MOD b
Modulus. Equivalent syntax to the percent character, eg a % b

See examples

If there is insufficient information on this page and you wish learn more about MOD, please send an email to You can help to improve information about MOD by submitting an article using the comments link below. Note, an offline language reference text file is now avialable – see the Download section.


' LOCATE MOD CHR ASC.bas  SmallBASIC 0.12.2 [B+=MGA] 2016-03-23

' LOCATE row, column - sets the next print location on screen, rows down, columns across

' a MOD b - returns the remainder of a/b as integer 0 to b-1
'           for example odd number n mod 2 returns 1, while even number n mod 2 returns 0
'           n mod 10 returns 0,1,2,3,4,5,6,7,8 or 9  we will use this is demo

' CHR - returns the CHaRracter for the ASC number, for demo we will print a chart of CHR for ASC numbers 32-128

' ASC(Character) - is a number code for a print characters, 32 is the code for a space

' ? - is shortcut for PRINT

' RIGHT(string,n) - returns right most n characters of string

' STR(n) - returns a number in string form

' : - code statement seperator often used with LOCATE row, column : ? string

' PAUSE optional-number-of-secs - waits for key press or mouse click and/or for a number seconds
' so lets user decide how long to wait

LOCATE 1,16 : ? "ASC Table 30-129:"  ' locate print spot, print title for our app
FOR column=0 to 9 'print a header, 10 numbers plus + (to add to row value)
  LOCATE 2,column*5+4 : ? "+";column
FOR row=3 to 12
  LOCATE row,0 : ? RIGHT(" "+STR(row*10)+":",4)
'main table
FOR ASCnumber=30 to 129   'note ASC(32) = space so wont see anything in Table
  row=ASCnumber\10 ' \ rounds division down to integer
  column=(ASCnumber MOD 10)*5+5  'times 5 to space out the characters printed plus 5 for column labels
  LOCATE row,column : ? CHR(ASCnumber)

' more MOD.bas  SmallBASIC 0.12.2 [B+=MGA] 2016-03-23

' n MOD m - returns the remainder of n divided by m, if 0 then m divides n perfectly

' another way to do MOD in SmallBASIC is to use symbol %, n%m is same as n MOD m

' MOD is great to tell if a number is divisible by another (leaves no remainders)

' a number not divisible by any number less to it other than 1, is called a prime number

' here we will list first 100 numbers and tell if prime or give the lowest divisor

'table setup: title header and row labels
LOCATE 0,0 : ? "P=Prime or Lowest Divisor Table"
FOR column=0 to 9 'print a header, 10 numbers plus + (to add to row value)
  LOCATE 2,column*2+7 : ? "+";column
FOR row=3 to 12
  LOCATE row,0 : ? RIGHT("    "+STR(row*10-30)+":",6)
'main table data
FOR n=1 to 99
  IF n=1 THEN
    report=" O" 'one is one, neither prime nor not prime
    report=" P" 'letter code for Prime
    FOR i=2 TO n-1
      IF n%i=0 THEN  '<== if n MOD i=0 or n%i=0, THEN i divides n perfectly
        report=" "+STR(i):EXIT  'we found lowest divisor get out of loop
      END IF 
  row=n\10+3 'n\10 is our number divided by 10 and rounded down,
  'call it the tens row offset 3 rows down for title and header and blank line
  column=n%10*2+7 '<== use MOD to LOCATE the column (*2 column width + 7 row label offset)
  LOCATE row,column :? report   '? short for print
?:?"O=one is neither prime nor not" '  ?:?"..." print blank line first