ISBN Buchnummer und ihr Nachfolger, die Buch-EAN
Prof. Dr. Dörte Haftendorn MuPAD 4 Feb 07 https://mathe.web.leuphana.de
###############################################################
b:=[3,4,4,6,2,0,8,3,9,9];
bs:=b[i]*(11-i)$ i=1..10
_plus(bs), _plus(bs)/11
bs9:=_plus(bs)-b[10];
pz:=11-bs9 mod 11
prfIBSN:=if (bs9+b[10]) mod 11=0 then
print("ISBN ist gültig")
else print("Fehler") end_if;
"ISBN ist gültig"
+++++++++++++++++++++++++++++
Buch-EAN
Seit 2007 gibt es die alte ISBN nicht mehr, es wird 978 vorangestellt, dann
folgt die alte Buchnummer, die Prüfziffer entspricht nun aber der EAN.
Umrechnung unten mit der Funktion altToNeu
#####################################
nb:=[9,7,8,3,4,4,6,2,0,8,3,9,1]
nbs:=nb[i]*(2+(-1)^i)$ i=1..13
nbs12:=_plus(nbs)-nb[13]
prfEAN:=if (nbs12+nb[13]) mod 10=0 then
print("EAN ist gültig")
else print("Fehler") end_if
"EAN ist gültig"
978-3-446-20839-1
978-3-407-22153-7
----------------------
Hier wird gezeigt, dass man 7 und 2 vertauschen kann.
nb :=[9,7,8,3,4,0,7,2,2,1,5,3,7];
nb2:=[9,7,8,3,4,0,2,7,2,1,5,3,7]
nbs :=nb[i] *(2+(-1)^i)$ i=1..13;
nbs2:=nb2[i]*(2+(-1)^i)$ i=1..13;
nbs12 :=_plus(nbs )- nb[13];
nbs122:=_plus(nbs2)-nb2[13]
prfEAN :=if (nbs12+nb[13]) mod 10=0 then
print("EAN ist gültig")
else print("Fehler") end_if;
prfEAN2:=if (nbs122+nb2[13]) mod 10=0 then
print("EAN ist gültig")
else print("Fehler") end_if:
"EAN ist gültig"
"EAN ist gültig"
Die neue EAN-Buichnummer ist also nicht so gut wie die alte ISBN.
Ziffern, die sich um 5 unterscheiden kann man umbemerkt vertauschen.
(Überlegung von Hand)
-----------------------------
978-3-518-39865-4
nb:=[9,7,8,3,5,1,8,3,9,8,6,5,4]
nbs:=nb[i]*(2+(-1)^i)$ i=1..13
nbs12:=_plus(nbs)-nb[13]
prfEAN:=if (nbs12+nb[13]) mod 10=0 then
print("EAN ist gültig")
else print("Fehler") end_if
"EAN ist gültig"
--------------------------------
978-3-518-39865-4
nb:=[9,7,8,3,5,1,8,3,9,8,6,5,4]
nbs:=nb[i]*(2+(-1)^i)$ i=1..13
nbs12:=_plus(nbs)-nb[13]
prfEAN:=if (nbs12+nb[13]) mod 10=0 then
print("EAN ist gültig")
else print("Fehler") end_if
"EAN ist gültig"
--------------------------------
altToNeu:=proc(isbn)
local i,nb,nbs,nbs12,pz;
begin
bs:=isbn[i]*(11-i)$ i=1..10;
bss:=_plus(bs);
if bss mod 11<>0 then
print("ISBN ist gar nicht gültig");
end_if;
nb:=[9,7,8].isbn;
nbs:=nb[i]*(2+(-1)^i)$ i=1..12;
nbs12:=_plus(nbs):
pz:=10-nbs12 mod 10;
nb[13]:=pz;
return(nb);
end_proc:
altToNeu([3,5,2,8,4,6,5,5,2,2]);