Task

Validate the check digit of an ISBN-13 code:

   Multiply every other digit by  3.
   Add these numbers and the other digits.
   Take the remainder of this number after division by  10.
   If it is  0,   the ISBN-13 check digit is correct.


Use the following codes for testing:

   978-1734314502       (good)
   978-1734314509         (bad)
   978-1788399081       (good)
   978-1788399083         (bad)


Show output here, on this page



See also

   for details:   13-digit ISBN method of validation.       (installs cookies.)


check_isbn13 () {
    local i n t
    n=${1//[^0-9]/}
    t=0
    for ((i=0; i<${#n}; ++i )); do
      (( t += ${n:i:1}*(1 + ((i&1)<<1)) ))
    done
    (( 0 == t % 10 ))
}
 
for isbn in 978-1734314502 978-1734314509 978-1788399081 978-1788399083; do
  printf '%s: ' "$isbn"
  if check_isbn13 "$isbn"; then
    printf '%s\n' OK
  else
    printf '%s\n' 'NOT OK'
  fi
done