login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A237042
UPC check digit for n.
1
7, 4, 1, 8, 5, 2, 9, 6, 3, 9, 6, 3, 0, 7, 4, 1, 8, 5, 2, 8, 5, 2, 9, 6, 3, 0, 7, 4, 1, 7, 4, 1, 8, 5, 2, 9, 6, 3, 0, 6, 3, 0, 7, 4, 1, 8, 5, 2, 9, 5, 2, 9, 6, 3, 0, 7, 4, 1, 8, 4, 1, 8, 5, 2, 9, 6, 3, 0, 7, 3, 0, 7, 4, 1, 8, 5, 2, 9, 6, 2, 9, 6, 3, 0, 7, 4, 1, 8, 5, 1, 8, 5, 2, 9, 6, 3
OFFSET
1,1
COMMENTS
The UPC check digit is calculated much like a base 10 digital root, except that the digits in the ones place, hundreds place, ten thousands place, etc., are multiplied by 3, before the final step of multiplying the whole sum by -1 prior to taking it modulo 10. Thus the UPC check digit gives the impression of advancing in steps of 7 with each increment of 1 except most of the times when the last digit of n goes from 9 to 0.
REFERENCES
David Salomon, Coding for Data and Computer Communications. New York: Springer (2006): 41 - 42.
LINKS
Eric Weisstein's World of Mathematics, UPC.
FORMULA
a(n) = -( (Sum_{i=1..floor(L/2)} d(2i-1)) + 3*(Sum_{j=0..floor(L/2)} d(2j)) ) mod 10, where L is how many digits n has, d(L - 1) is the most significant digit of n, ..., and d(0) is the ones place digit.
EXAMPLE
a(13) = 0 because 1 * 1 + 3 * 3 = 10, giving a check digit of 0.
a(14) = 7 because 1 * 1 + 4 * 3 = 13, and -13 = 7 mod 10.
a(15) = 4 because 1 * 1 + 5 * 3 = 16, and -16 = 4 mod 10.
PROG
(PARI) a(n) = vecsum(digits(n, 100)*31\-10) % 10; \\ Kevin Ryde, Oct 03 2023
CROSSREFS
Sequence in context: A010508 A070403 A144468 * A258225 A059630 A258330
KEYWORD
nonn,easy,base
AUTHOR
Alonso del Arte, Feb 02 2014
STATUS
approved