Matematik med lite logik - Turku Centre for Computer Science

Ralph-Johan Back | Joakim von Wright
Matematik med lite logik
En kort kurs i talteori
Turku Centre for Computer Science
IMPEd Resource Centre
TUCS Lecture Notes
No 2, Oct 2008
Matematik med lite logik
En kort kurs i talteori
Ralph-Johan Back och Joakim von Wright
Oktober 2008, Åbo, Finland
Copyright Ralph-Johan Back and Joackim von Wright
All rights reserved
TUCS Lecture Notes
Nr 2
IMPEd Series
Förord
Vi ger här en kort kurs i talteori med hjälp av strukturerade härledningar.
Kursen är tänkt att ges på gymnasienivå, och förutsätter att man som bakgrund
har en kurs i logik med strukturerade härledningar. Avsikten är att visa hur
strukturerade härledningar fungerar i praktiken i gymnasiematematiken.
Matematik med logik Den här publikationen är en del i en serie som beskriver strukturerade härledningar och deras tillämpning i matematikundervisningen. För tillfället har följande publikationer utkommit i den här serien:
• Strukturerade härledningar i gymnasiematematiken (Back, Wright [11])
• En kort kurs i talteori (Back, von Wright [10])
• Studentexamen i lång matematik, våren 2003 (Back, von Wright[12])
• Introduktion till strukturerade härledningar (Back [2])
• Logik för strukturerade härledningar (Back [3])
• Strukturerade härledningar som allmänt bevisformat (Back [4])
Vi hänvisar till övriga publikationerna i den här serien för att få en mera
mångsidig uppfattning om den här metoden och dess användning i praktiken.
Tackord Arbetet med att utveckla strukturerade härledningar och experimenten med att använda metoden i undervisningen har skett i nära samarbete med
medlemmarna i Learning and Reasoning laboratoriet, ett forskningslaboratorium som är gemensamt för Åbo Akademi och Åbo Universitet. Speciellt vill vi
tacka följande personer för en mängd givande och intressanta diskussioner om
metoden och bidrag till metodens utveckling (listan är i alfabetisk ordning):
Johannes Eriksson, Tanja Kavander, Linda Mannila, Martin Nylund, Mia Peltomäki, Viorel Preoteasa, Tapio Salakoski, och Patrick Sibelius. Forskningen
har finansierats av Finlands Akademi, inom ramen för projektet “Center of
Excellence in Formal Methods in Programming”.
3
4
Innehåll
1 Introduktion
7
2 En standardmetod
9
3 Delbarhet och primfaktorisering
13
4 Diofantiska ekvationer
21
5 Kongruenser och moduloaritmetik
29
6 Kryptering
37
5
Innehåll
6
1 Introduktion
Strukturerade härledningar är en ny metod för att beskriva matematiska bevis
och härledningar som lämpar sig väl för undervisning på gymnasienivå. Metoden är ursprungligen utvecklad av oss, och har beskrivits i bl.a. [9, 1, 5, 7, 8].
En översikt av metoden ges i tutorialen [2] samt i logikkursen [11]. Strukturerade härledningar är en vidareutveckling av E.W. Dijktras lineära härledningar
(calculational style proofs) [14, 16, 15]. Vi har experimenterat med att använda
strukturerade härledningar i gymnasieundervisningen i ett antal större forskningsprojekt med forskare från Åbo Akademi (Back, von Wright, Mannila), Åbo
Universitet (Tapio Salakoski) och Kuppis Gymnasium i Åbo (Mia Peltomäki)
[13, 6]. Vi förutsätter här att läsaren känner till strukturerade härledningar,
t.ex. på basen av den ovannämnda tutorialen eller logikkursen.
Syftet med den här rapporten är att visa hur strukturerade härledningar
fungerar i praktiken i gymnasiematematiken. Den här rapporten ger ett exempel
på en matematikkurs på gymnasienivå baserad på strukturerade härledningar.
Vi har valt att exemplifiera metoden med en kurs i talteori. Orsaken till att vi
just valt talteori är att det i Finland nyligen introducerats en ny valbar kurs
i lång matematik med namnet “Logik och talteori”. Vi och våra kolleger har
föreläst den kursen ett antal gånger, och då använt en preliminär version av den
här rapporten samt av [11] som kurslitteratur. Erfarenheterna av att föreläsa
kursen med hjälp av strukturerade härledningar har varit mycket goda. Kursen
i talteori som vi beskriver här diskuterar delbarhet och primtalsfaktorisering,
diofantiska ekvationer, moduloaritmetik samt kryptering.
Talteori handlar om heltalens egenskaper. Vissa delar av talteorin begränsar
sig till de naturliga talen (dvs de icke-negativa heltalen). Traditionellt har talteori haft en speciell status inom matematiken, delvis på grund av att den ansetts
ha ytterst få praktiska tillämpningar, dels genom att många olösta eller ytterst
svåra problem inom talteorin kunnat formuleras enkelt. Det bästa exemplet är
kanske Fermats stora sats:
Ekvationen xn + y n = z n saknar positiva heltalslösningar då n ≥ 2
Detta teorem bevisades slutligt år 1995 av den amerikanske matematikern
Andrew Wiles, över 350 år efter att Pierre Fermat påstod sig ha ett elegant
bevis som han aldrig publicerade.1 Ett annat exempel är Goldbachs antagande
1
I sitt exemplar av Diofantus skrift “Arithmetica” antecknade Fermat: “Jag har ett i sanning
7
1 Introduktion
Varje jämnt heltal kan skrivas som en summa av två primtal
som fortfarande varken bevisats eller motbevisats.
Intresset för talteori har ökat de senaste decennierna då den visat sig kunna
tillämpas inom kryptering: de metoder som används för att kryptera meddelanden (dvs chiffrera dem, koda dem så att ingen utomstående kan avkoda dem)
bygger på talteoretiska resultat om delbarhet och faktorisering.
underbart bevis för detta påstående, men denna marginal är för smal för att rymma det.”
Fermat var känd för att hemlighålla bevis eller bara antyda dem.
8
2 En standardmetod
Innan vi går in på egentlig talteori skall vi se på en standardmetod som kan
användas för att visa heltalsegenskaper.
En huvudräkningsregler för multiplikation Tvåsiffriga heltal som slutar på
en femma kan enkelt kvadreras enligt minnesregeln
om första siffran är m, bilda m(m + 1) och låt produkten följas av
en tvåa och en femma
Om regeln används för att beräkna 352 så får vi 3 · 4 = 12 och
352 = 1225
På samma sätt fås 752 = 5625 eftersom 7 · 8 = 56. Regeln ger rätt svar i båda
fallen.
För att bevisa att metoden alltid ger rätt svar måste vi först uttrycka den
aktuella egenskapen hos de inblandade talen (tvåsiffriga tal som slutar med en
femma) matematiskt. Sådana tal har formen
10m + 5
där m är ett heltal mellan 1 och 9, dvs 1 ≤ m ≤ 9. I talteoretiska resonemang är
det underförstått att det handlar om heltal, så man behöver inte uttryckligen
ange m ∈ Z.1
Det är också viktigt att formulera regelns resultat matematiskt. Ett tal vars
första siffror bildas av talet m(m+1) och vars sista siffror är 2 och 5 kan skrivas
som
100m(m + 1) + 25
Faktorn 100 ser till att produkten m(m + 1) inte berör de två sista siffrorna
(tiotals- och entalssiffrorna) i talet.
Nu kan regeln lätt bevisas:
(10m + 5)2
1
Ibland kan det framgå ur sammanhanget att en variabel varierar över N (de naturliga talen)
eller Z+ (de positiva heltalen), utan att detta uttryckligen anges.
9
2 En standardmetod
=
{kvadreringsregeln}
100m2 + 100m + 25
=
{bryt ut 100m}
100m(m + 1) + 25
Märk att antagandet 1 ≤ m ≤ 9 inte utnyttjades i beviset. Det var ändå
en viktig del av själva problemformuleringen, eftersom det garanterar att det
handlar om tvåsiffriga tal.
Regeln ovan är ett specialfall av en allmän regel för multiplikation av tvåsiffriga tal med samma tiotalssiffra och med entalssiffror vars summa blir tio. Om
tiotalssiffran är m så är bildas resultatets två sista siffror av entalssiffrornas
produkt, och före dem kommer m(m + 1). Den regeln ger till exempel
53 · 57 = 3021
eftersom 5 · 6 = 30 och 3 · 7 = 21. På samma sätt fås 94 · 96 = 9024.
Matematisk beskrivning av egenskaper hos heltal Lärdomen av exemplet
ovan är att då man lyckas formulera de aktuella egenskaperna matematiskt kan
själva beviset vara mycker kort och enkelt. Många heltalsegenskaper som dyker
upp inom talteorin kan uttryckas enligt samma princip. Några exempel:
• ett tal är udda om och endast om det har formen 2k + 1,
• ett tal slutar på en sjua om och endast om det har formen 10m + 7,
• ett tal är delbart med 5 om och endast om det har formen 5m,
• ett tal är tvåsiffrigt om och endast om det har formen 10a+b där 1 ≤ a ≤ 9
och 0 ≤ b ≤ 9.
Här används namn som k, m och a, b för heltal om vilket vi inte har någon
ytterligare information. Vilka namn som helst får naturligtvis användas.
Med kvantorer kan detta uttryckas exakt. Påståendet
heltalet x slutar på en sjua
skrivs tex som
(∃m • x = 10m + 7)
10
Upgifter
1. Använd reglerna i texten för att i huvudet beräkna
a) 552
b) 33 · 37
2. Använd konjugatregeln som huvudräkningsregel för multiplikationerna
47 · 53 och 32 · 28.
3. Formulera följande heltalsegenskaper matematiskt:
a) x är ett jämnt tal.
b) y är ett tresiffrigt tal som slutar på en nia.
c) talen a och b är tvåsiffriga och innehåller samma siffror men i olika
ordning.
4. Formulera den allmännare multiplikationsregel som beskrivs i texten och
bevisa den.
5. Visa att då ett heltal upphöjs i kvadrat så kan den sista siffran i resultatet
aldrig vara 2, 3, 7 eller 8. (Ledning: tänk dig heltalet på formen 10a + b
och analysera alla möjligheter för b.)
6. Visa att om sista siffran i ett heltal n är en sexa så är också sista siffran
i n2 en sexa.
7. Vad är sista siffran i
a) 20052005
(b) 20042004 ?
8. Visa att produkten av två successiva tal (dvs två tal efter varandra, som
13 och 14 eller 28 och 29) måste vara ett jämnt tal. (Ledning: gör ett
bevis för fallet att det första talet är jämnt och ett annat bevis för fallet
att det första talet är udda).
11
2 En standardmetod
12
3 Delbarhet och primfaktorisering
Delbarhet Skrivsättet m|n betyder att talet n är debart med talet m, dvs att
divisionen m : n gåe jämnt ut. Delbarhet definieras på följande sätt
m|n ⇔ (∃k • k · m = n)
I kapitlet om existenskvantorn såg vi hur delbarhetsbevis kan utföras. Delbarhetsbevis handlar ofta om att visa påståenden av formen
p ⇒ q
där p och q är delbarhetspåståenden, dvs påståenden med existenskvantorer.
Som exempel visar vi
m|x ⇒ m2 |x2
eller uttryckt i ord:
om x är delbart med m så är x2 delbart med m2 .
Enligt definitionen av delbarhet skall vi alltså visa följande:
(∃k • k · m = x) ⇒ (∃k • k · m2 = x2 )
Enligt regeln om existensantaganden får vi ge ett namn (vi väljer h) åt vittnet,
så vi får anta
(A) hm = x
Nu gäller det att visa att det finns ett tal k sådant att x2 = k · m2 . Det kan
göras med en enkel härledning, utgående från antagandet (A):
hm = x
⇒
{kvadrera båda sidor}
(hm)2 = x2
⇔
{exponentregel}
h2 m2 = x2
⇒
{vittnesregeln, vittnet är h2 }
(∃k • k · m2 = x2 )
och delbarheten är bevisad.
13
3 Delbarhet och primfaktorisering
Primtal Ett primtal är ett naturligt tal n ≥ 2 som inte har andra positiva
faktorer än 1 och n. De första primtalen är 2, 3, 5, 7, 11, 13, 17, 19. Märk att 2
är det enda jämna primtalet. Det finns oändligt många primtal (se uppgifterna
i slutet av kapitlet).
Primtalen följer ingen exakt definierad fördelning, men överlag blir det glesare
mellan primtalen ju större de tal som man undersöker blir. Trots detta kan man
visa att det finns oändligt många primtalstvillingpar (n, n + 2), tex (11, 13) och
(71, 73).
Erathostenes såll är en metod att hitta alla primtal. Ur en oändlig uppräkning
av alla heltal ≥ 2 stryks först alla jämna tal utom 2, sedan alla tal som är delbara
med 3 (utom 3), sedan alla tal som är delbara med 5 (utom 5), osv.
Ett effektivt primtalstest som avgör om ett tal n är ett primtal eller inte
kan göras enligt följande. Om n inte är delbart med ett enda av primtalen
2, 3, 5 . . . k, där k är det sista primtalet som uppfyller k 2 < n, så är n ett
primtal.
Metoden tillämpas på talet 239, så här. Via divisioner ser vi att 239 inte är
delbart med något av de sex första primtalen 2, 3, 5, 7, 11 och 13. Följande
primtal är 17 och eftersom 172 > 239 vet vi då att 239 är ett primtal.
Faktoriseringar och aritmetikens grundsats En faktorisering av ett heltal n
är en uppdelning i faktorer (större än 1), dvs en uppdelning i en produkt. Till
exempel kan 60 faktoriseras enligt 60 = 6 · 10 och enligt 60 = 3 · 4 · 5 medan
111 kan faktoriseras enligt 111 = 3 · 37. Ett primtal kan faktoriseras på bara
ett sätt, tex 17 = 17.
Också om ett heltal kan faktoriseras på flere olika sätt kommer vi till slut att
få samma faktorer om vi fortsätter faktoriseringen tills alla faktorer är primtal.
Detta formuleras i aritmetikens grundsats:
Varje naturligt tal n ≥ 2 kan på ett entydigt sätt uppdelas i primfaktorer.
Primfaktoriseringen skrivs med faktorerna i stigande storleksordning och gärna i potensform, tex
504 = 2 · 2 · 2 · 3 · 3 · 7 = 23 · 32 · 7
Aritmetikens grundsats är en av talteorins grundstenar. Den kan verka självklar, men den är inte så lätt att bevisa.
Gemensamma faktorer Antag att k, m och n står för positiva heltal. Om
k|m och k|n så är k en gemensam faktor för m och n. Till exempel har talen
24 och 36 den gemensamma faktorn 6. Talet 1 alltid är en gemensam faktor till
två tal.
14
Det finns alltid en största gemensamma faktor till två positiva heltal m och
n och den betecknas sgf(m, n). Exempel:
sgf(24, 36) = 12
sgf(9, 16) = 1
sgf(8, 16) = 8
Om sgf(m, n) = 1 så sägs talen m och n vara relativt prima.
Den största gemensamma faktorn sgf(m, n) fås genom att man ur primfaktoriseringarna för m och n tar med alla faktorer, med den lägre exponenten.
Detta blir tydligast om man också skriver ut nollexponenter, tex
504 = 23 · 32 · 71 = 23 · 32 · 50 · 71 · 110
660 = 22 · 31 · 51 · 111 = 22 · 31 · 51 · 70 · 111
alltså gäller
sgf(504, 660)
=
{faktorisering}
sgf(23 · 32 · 71 , 22 · 31 · 51 · 111 )
=
{tag med faktorer med lägre exponent}
22 · 31
=
{beräkna värdet}
12
Gemensamma multipler Om m|k och n|k så är k en gemensam multipel för
m och n. Det finns alltid en minsta gemensamma multipel till m och n, som
betecknas mgm(m, n). Till exempel gäller
mgm(4, 6) = 12
mgm(30, 18) = 90
Minsta gemensamma multipeln är användbar vid addition och subtraktion
av bråk: om m och n är nämnarna i de två bråk som skall adderas/subtraheras
så skall båda förlängas så att de får nämnaren mgm(m, n) (den “minsta gemensamma nämnaren”).
Den minsta gemensamma multipeln mgm(m, n) fås genom att man ur primfaktoriseringarna för m och n tar med alla faktorer, med den högre exponenten.
Till exempel gäller:
mgm(504, 660)
15
3 Delbarhet och primfaktorisering
=
{faktorisering}
mgm(23 · 32 · 71 , 22 · 31 · 51 · 111 )
=
{tag med faktorer med högre exponent}
23 · 32 · 51 · 71 · 111
=
{beräkna värdet}
27720
Man kan visa att
sgf(m, n) · mgm(m, n) = m · n
Därför kan mgm lätt uträknas om man redan beräknat sgf (och tvärtom). Vi
får alltså
504 · 660
= 27720
mgm(504, 660) =
12
eftersom sgf(504, 660) = 12, vilket visades tidigare.
Euklides algoritm Det är ett välkänt faktum att det är ytterst tidsödande
att primfaktorisera ett stort tal, speciellt om talet har två ungefär jämnstora
faktorer (moderna krypteringsmetoder bygger i själva verket långt på detta).
Men det finns en effektiv metod att hitta sgf(m, n), Euklides algoritm, som
bygger på divisionsalgoritmen:
Först divideras det större av talen m och n med det mindre och
divisionsresten antecknas. Därefter divideras det mindre talet med
denna divisionsrest och den nya divisionsresten antecknas. Så här
fortsätter man ända tills divisionen går jämnt ut. Då är den sista
divisorn (dvs den sista divisionsresten) sgf(m, n).
Ett exempel visar hur sgf(504, 660) hittas, systematiskt:
660 : 504 ger kvoten 1 och resten 156
504 : 156 ger kvoten 3 och resten 36
16
156 : 36
ger kvoten 4 och resten 12
36 : 12
ger kvoten 3 och resten 0
Den sista divisionsresten var 12, alltså gäller sgf(504, 660) = 12.
Att algoritmen ger rätt svar kan motiveras med att en gemensamma faktor
till två tal också är en faktor i talens divisionsrest. Till exempel betyder det
första steget att
660 = 1 · 504 + 156
och då måste varje gemensam faktor i 660 och 504 också vara en faktor i 156.
Dessutom blir resten mindre för varje gång (men aldrig negativ), så förr eller
senare når man en punkt där resten blir 0.
Euklides algoritm kan skrivas som en linjär härledning, där talen steg för steg
blir mindre:
sgf(660, 504)
=
{division av 660 med 504 ger kvoten 1 och resten 156}
sgf(504, 156)
=
{division av 504 med 156 ger kvoten 3 och resten 36}
sgf(156, 36)
=
{division av 156 med 36 ger kvoten 4 och resten 12}
sgf(36, 12)
=
{division av 36 med 12 ger kvoten 3 och går jämnt ut}
12
Linjära kombinationer Euklides algoritm ger också en biprodukt: Om vi har
sökt största gemensamma faktorn till talen m och n så kan vi hitta två heltal
x och y sådana att mx + ny = sgf(m, n) genom att följa Euklides algoritm
baklänges.
I exemplet hittar vi tal x och y så at 660x + 504y = 12 på följande sätt:
12
=
{nästsista divisionen visar att 156 = 4 · 36 + 12, alltså 12 = 156 − 4 · 36}
156 − 4 · 36
=
{föregående division visar att 504 = 3 · 156 + 36, alltså 36 = 504 − 3 · 156}
156 − 4 · (504 − 3 · 156)
17
3 Delbarhet och primfaktorisering
=
{förenkling}
−4 · 540 + 13 · 156
=
{första divisionen visar att 660 = 1 · 504 + 156, alltså 156 = 660 − 1 · 504}
−4 · 540 + 13 · (660 − 1 · 540)
=
{förenkling}
13 · 660 − 17 · 540
och vi har visat att 13 · 660 − 17 · 504 = 12, dvs de sökta talen är x = 13 och
y = −17.
I själva verket har vi hittat en heltalslösning till ekvationen 660x + 504y =
12. Metoden fungerar allmänt för att hitta en lösning till heltalsekvationer av
formen mx + ny = sgf(m, n). Uttrycket mx + ny kallas en linjär kombination
av talen m och n.
Uppgifter
1. Avgör om följande tal är primtal: (a) 1001
(b) 217 − 1.
2. Visa att det inte kan finnas ett största primtal, enligt följande: om p är det
största av alla primtal, hur är det då med p!+1, dvs p·(p−1)·. . .·2·1+1?
Argumentet visar att det finns oändligt många primtal.
3. Visa att om n är delbart med 3 så är n2 − 3n delbart med 9.
4. Visa att om n är ett udda tal så är n2 − 1 delbart med 8.
5. Visa att om det ena av talen x och y är delbart med m så är produkten
xy delbar med m. Tips: man kan anta att det är x som är delbart med
m (varför?)
6. Motivera följande regel: om p är ett primtal och p|mn så gäller p|m eller
p|n. Visa med ett motexempel att regeln inte behöver gälla då p inte är
ett primtal.
7. Bestäm sgf(x, y), då
a) x = 42 och y = 91
(b) x = 123 och y = 234
Vilka ekvationer har du då löst?
8. Uttryck sgf(x, y) som en linjär kombination av x och y, då
18
a) x = 42 och y = 91
(b) x = 5432 och y = 4321
Vilka ekvationer har du då löst?
9. Varför finns det alltid en största gemensam faktor till två positiva heltal?
10. Motivera varför sgf(m, n) = m om m|n.
11. Motivera varför regeln sgf(m, n)·mgm(m, n) = m·n gäller. Använd därefter regeln för att snabbt beräkna mgm(504, 660) då du vet att sgf(504, 660) =
12.
19
3 Delbarhet och primfaktorisering
20
4 Diofantiska ekvationer
Diofantiska ekvationer En ekvation över heltal (dvs där alla koefficienter är
heltal och endast heltalslösningar söks) kallas diofantisk.1
Ett bekant exempel är Pythagoras ekvation
x2 + y 2 = z 2
som bland annat har lösningarna (x, y, z) = (3, 4, 5) och (x, y, z) = (8, 15, 17).
Vi skriver gärna lösningar på detta sätt (som tupler ) men de kan lika väl skrivas
på formen

 x = 3
y = 4
x=3 ∧ y=4 ∧ z=5
eller

z = 5
Här skall främst behandlas linjära diofantiska ekvationer med två obekanta,
dvs ekvationer på formen
ax + by = c
där a, b och c är heltal. Ett exempel är ekvationen
2x + 3y = 10
till vilken det är lätt att hitta flere olika lösningar, tex (x, y) = (5, 0) och
(x, y) = (−1, 4).
Grafiskt kan en diofantisk ekvation med två obekanta tolkas på följande sätt.
Ekvationen motsvarar en kurva i planet och vi söker efter heltalspunkter på
kurvan, dvs sådana punkter (x, y) på denna kurva att både x och y är heltal.
Diofantiska ekvationer har ofta många olika lösningar, och man måste särskilja två olika problem:
1. att hitta en lösning, och
2. att hitta alla lösningar
1
Matematikern Diofantos levde i Alexandria, troligen på 200-talet e.Kr. Han sammanställde
en serie på tretton böcker, Arithmetica, med nya och gamla matematiska problem. Endast
sex av böckerna bevarades genom medeltiden.
21
4 Diofantiska ekvationer
Vi skall här ta upp en metod för att först hitta en lösning till en linjär ekvation
och sedan ur den ena lösningen härleda alla andra lösningar. Som exempel
använder vi ekvationen
15x + 42y = 18
En lösningsmetod för linjära diofantiska ekvationer med två obekanta Det
första steget är att dividera bort koefficienternas gemensamma faktorer. I exempelfallet är 3 den största gemensamma faktorn2 för talen 15, 42 och 18 och
man får
15x + 42y = 18
{dividera båda sidor med 3}
=
5x + 14y = 6
Om koefficienterna a och b ännu har någon gemensam faktor större än 1 så
saknar ekvationen lösningar, eftersom ekvationens vänster sida då skulle ha en
faktor som saknas på höger sida.
I vårt fall är koefficienterna 5 och 14 relativt prima, så vi fortsätter. Vi
börjar med att ändra höger sida i ekvationen till en etta och löser alltså först
ekvationen
5x + 14y = 1
Som första steg hittas sgf(14, 5) med hjälp av Euklides algoritm. Vi får
sgf(14, 5)
=
{division av 14 med 5 ger kvoten 2 och resten 4}
sgf(5, 4)
=
{division av 5 med 4 ger kvoten 1 och resten 1}
sgf(4, 1)
=
{division av 4 med 1 ger kvoten 4 och går jämnt ut}
1
Nu används den härledningen för att bilda 1 som linjär kombination av 5 och
14.
2
Om koefficienterna är stora kan det vara omständigt att hitta den största gemensamma
faktorn, men den kan alltid hittas som sgf(sgf(a, b), c).
22
1
{nästsista steget visar att 5 = 1 · 4 + 1, så 1 = 5 − 1 · 4}
=
5−1·4
{första steget visar att 14 = 2 · 5 + 4, så 4 = 14 − 2 · 5}
=
5 − 1 · (14 − 2 · 5)
=
{förenkling}
3 · 5 − 1 · 14
Det visar att 3·5−1·14 = 1, dvs att (x, y) = (3, −1) är en lösning till ekvationen
5x + 14y = 1
Nu kan vi arbeta “bakåt” till den ursprungliga ekvationen enligt följande:
3 · 5 − 1 · 14 = 1
⇔
{omskrivning}
5 · 3 + 14 · (−1) = 1
⇔
{multiplicera båda sidor med 6}
6 · (5 · 3 + 14 · (−1)) = 6
⇔
{förenkla vänster sida}
5 · 18 + 14 · (−6) = 6
Märk hur talen 6 och 3 multiplicerades in i vänstra sidan på olika sätt. Härledningens sista rad visar att (x, y) = (18, −6) är en lösning till ekvationen
5x + 14y = 6 och alltså också till ekvationen
15x + 42y = 18
Detta kan också enkelt kontrolleras genom beräkning av 15 · 18 + 42 · (−6) på
räknare.
23
4 Diofantiska ekvationer
Den allmänna lösningen Metoden ovan visade att (x, y) = (18, −6) är en
lösning till ekvationen
15x + 42y = 18
Grafiskt kan detta uttryckas så att den räta linjen 15x + 42y = 18 går genom
heltalspunkten (18, −6) i xy-planet. Då linjens riktningskoefficient är
k=−
15
5
=−
42
14
så vet vi att 14 steg högerut och 5 steg nedåt (se Figur 4.1) finns också en
heltalspunkt på linjen:
(18 + 14, −6 − 5) = (32, −11)
Man kan dessutom visa att eftersom 5 och 14 är relativt prima så finns det inga
heltalspunkter mellan (18, −6) och (32, −11).
15x+42y=18
(18,−6)
5
(32,−11)
14
Figur 4.1: Heltalspunkter på linjen 15x + 42y = 18.
Argumentet kan vidareutvecklas: alla punkter med x-koordinat 18 + 14k och
y-koordinat −6−5k (där k är ett heltal) kommer att ligga på linjen 5x+14y = 6.
Den allmänna lösningen blir alltså
(x, y) = (18 + 14k, −6 − 5k),
k∈Z
Detta kan också uttryckas med en existenskvantor: den ursprungliga ekvationen
är ekvivalent med påståendet
(∃k ∈ Z • x = 18 + 14k ∧ y = −6 − 5k)
Antag nu att det handlar om ekvationen ax + by = c. Då en lösning (x0 , y0 )
till ekvationen har hittats är det lätt att kontrollera att (x, y) = (x0 + b, y0 − a)
också är en lösning, eftersom
a(x0 + b) + b(y0 − a)
24
=
{multiplicera parenteserna}
ax0 + ab + by0 − ba
=
{förenkla}
ax0 + by0
=
{antagandet att (x0 , y0 ) var en lösning}
c
På samma sätt visar man att också (x, y) = (x0 + kb, y0 − ka) är en lösning,
för alla heltal k. Det kan också visas (vi gör det inte här, men det kan göras
som en tillämpning av moduloaritmetiken som beskrivs i nästa kapitel) att alla
lösningar kan skrivas på den här formen. Alltså är (x, y) = (x0 + kb, y0 − ka)
den allmänna lösningen till ekvationen.
I exempelekvationen betyder detta att den allmäna lösningen är
(x, y) = (18 + 14k, −6 − 5k),
k∈Z
som vi redan såg. Man kan inte kontrollera alla lösningar eftersom de är oändligt
många, men vi kan som exempel kolla för k = −2: då är x = −10 och y = 4
och mycket riktigt gäller att 15 · (−10) + 42 · 4 = 18.
Vi avslutar med en sammanfattning av metoden för att lösa en linjär diofantisk ekvation med två obekanta:
1. Dividera bort gemensamma faktorer, resultatet är en ekvation ax+by = c.
2. Avgör om ekvationen helt saknar lösningar, dvs om sgf(a, b) > 1.
3. Lös ekvationen ax+by = 1 med hjälp av Euklides algoritm, kalla lösningen
(x0 , y0 ).
4. Multiplicera lösningen med c för att få en lösning (cx0 , cy0 )till den ursprungliga ekvationen.
5. Den allmänna lösningen är (x, y) = (cx0 + kb, cy0 − ka) för k ∈ Z.
Allmäna diofantiska ekvationer Allmänna diofantiska ekvationer kan ofta lösas så att man antingen lyckas visa att inga lösningar finns, eller först hittar en
lösning och sedan härleder nya lösningar ur den. Vissa traditionella ekvationslösningsmetoder kan vara användbara, tex faktorisering, men dessutom krävs
oftast olika delbarhetsargument.
25
4 Diofantiska ekvationer
Ett välkänt exempel är Pythagoras ekvation
x2 + y 2 = z 2
Efter att man hittat en lösning, tex (x, y, z) = (3, 4, 5) så kan man lätt visa att
(x, y, z) = (3k, 4k, 5k) också är en lösning, för alla heltal k.
För att visa att lösningar saknas kan delbarhetsargument ofta vara användbara. Till exempel ser man att ekvationen
8x − 12y = 10
inte kan ha några heltalslösningar, eftersom vänster sida är delbar med 4, men
inte höger sida.
Ett annat exempel är ekvationen
x3 y − 1 = xy 3 + x + y
Här kan man visa att om ekvationens ena sida är ett jämnt tal så är den andra
udda och tvärtom. Det kräver fyra delbevis: ett för fallet att både x och y är
jämna tal, ett för fallet att x är jämnt och y udda, osv. Eftersom ett udda tal
inte kan vara lika med ett jämnt tal betyder detta att ekvationen inte kan ha
någon heltalslösning.
Uppgifter
1. Lös följande diofantiska ekvationer genom att först hitta en lösning (utan
att ta till Euklides algoritm) och sedan bestämma den allmänna lösningen:
a) 3x + 4y = 1
(b) 5x − 7y = 1
(c) 3x + 4y = 5
2. Vilka av följande ekvationer saknar heltalslösningar:
a) 3x + 6y = 12
(b) 12x + 6y = 3
(c) 92x − 114y = 37
3. Lös följande diofantiska ekvationer:
a) 32x + 50y = 8
(b) 32x + 50y = 7
4. [SE00v15] Bestäm med hjälp av Euklides algoritm den största gemensamma delaren (faktorn) sgd(34086, 14630) till talen 34086 och 14630.
Framställ denna som en linjär kombination av talen, dvs bestäm heltalen
a och b så att sgd(34086, 14630) = 34086a + 14630b.
5. [SE00h15] Bestäm alla lösningar till den diofantiska ekvationen 10x+4y =
36.
26
6. Visa att för alla heltalsvärden på m och n är (x, y, z) = (m2 −n2 , 2mn, m2 +
n2 ) en lösning till Pythagoras ekvation x2 +y 2 = z 2 . För hurudana kombinationer av m och n ger detta positiva lösningar? Beräkna 5 olika sådana
lösningar.
7. Visa att (x, y, z) = (9, 12, 15) är en lösning till Pythagoras ekvation. Kan
denna lösning konstrueras enligt metoden i föregående uppgift?
8. Visa att den diofantiska ekvationen x3 y−1 = xy 3 +x+y saknar lösningar,
genom att analysera vad som händer om x och y är udda respektive jämnt
(fyra kombinationsmöjligheter).
9. Visa att om x är ett heltal så blir resten vid division av x2 med 3 antingen
0 eller 1, men aldrig 2. Använd sedan detta för att visa att den diofantiska
ekvationen x2 + 3y 2 = 6z − 1 saknar lösningar.
10. Visa att (x, y) = (11, 2) är en lösning till den diofantiska ekvationen
x3 − (x − y)3 = 602
Bestäm därefter ytterligare en lösning till ekvationen.
27
4 Diofantiska ekvationer
28
5 Kongruenser och moduloaritmetik
Då ett heltal divideras med n blir resten ett av talen 0, 1, . . . , n − 1. Man kan
tänka sig dessa tal ordnade i en cirkel, så att om man tar ett steg framåt från
n − 1 så hamnar man tillbaka till 0. Det visar sig att många talteoretiska frågor
bäst kan analyseras med kongruenser och moduloaritmetik, som handlar om
räkneoperationer på sådana ändliga, cirkulära talmängder.
Klockaritmetik Om vi räknar hela timmar på en traditionell klocka kan vi
tänka oss att 12 motsvarar 0. På samma sätt kommer 13 att motsvara 1, osv.
Ett klockslag n där n ≥ 12 kan lätt omvandlas till ett klockslag mellan 0 och
11 genom att vi bildar divisionsresten då n divideras med 12.
En fråga av typen “Vad kommer klockan att visa 43 timmar efter att den visar
åtta?” kan lätt besvaras. Man bildar först summan 8 + 43 = 51 och dividerar
med 12 varvid resten blir 3. Alltå är svaret att klockan visar 3.
Vi namnger “klocktalen”
Z12 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
och definierar en ny additionsoperation på Z12 så att m + n (där + är den nya
additionsoperationen) är resten vid division av m + n med 12. Till exempel
gäller då 8 + 7 = 3 och 3 − 5 = 10.
Subtraktion och multiplikation inom klocktalen kan definieras på samma sätt.
Till exempel gäller då att 2−5 = 9 och 5·5 = 1. Vissa besynnerliga saker händer
i denna klockaritmetik, som att 5 + 6 = 5 − 6 och att ekvationen x2 = x har fler
än två lösningar (se uppgifterna).
Restklasser De heltal som motsvarar klockslaget 1 bildar en mängd {. . . , −11, 1, 13, . . .}.
En sådan mängd kallas en restklass modulo 12 och varje tal i mängden kallas
en representant för restklassen. Restklasserna namnges
1 = {1 + 12k | k ∈ Z}
och 0, 2, osv på samma sätt.
I stället för “klockaritmetik” talar vi nu om aritmetik modulo 12 eller om
aritmetik i Z12 . I denna aritmetik kan addition definieras som en räkneoperation
på restklasser, enligt
a+b=a+b
29
5 Kongruenser och moduloaritmetik
Detta betyder tex att 7 + 8 = 3 eftersom 7 + 8 = 15 och 15 hör till samma
restklass som 3.1
Subtraktion och multiplikation i Z12 definieras på motsvarande sätt. Så gäller
till exempel 7 − 9 = 10 och 3 · 5 = 3.
Om det ur sammanhanget klart framgår att det handlar om aritmetik modulo
12 kan vi för enkelhets skull skriva 8 + 9 = 5 i stället för det korrekta 8 + 9 = 5.
Aritmetik modulo k kan byggas upp för alla positiva heltal. För k = 1 är den
totalt ointressant (eftersom det enda talet är 0) men redan för k = 2 blir den
intressant (se uppgifterna).
Moduloaritmetiken för Z3 kan beskrivas med hjälp av additions- och multiplikationstabeller:
+
0
1
2
0
0
1
2
1
1
1
0
2
2
0
1
·
0
1
2
0
0
0
0
1
0
1
2
2
0
2
1
Eftersom man går “i cirkel” (dvs 3 blir 0 och 4 blir 1) så kommer multiplikationen 2 · 2 att ge 1. Detta visar att man i moduloaritmetiken måste vara
försiktig med begrepp som “udda” och “jämna” tal.
Många av den vanliga aritmetikens räkneregler gäller också för moduloaritmetik, tex
• kommutativitet: a + b = b + a och ab = ba,
• associativitet: a + (b + c) = (a + b) + c och a(bc) = (ab)c,
• distributivitet: a(b + c) = ab + ac,
• enhetselement: a + 0 = a och 1 · a = a, samt
• motsatt tal: för varje tal x finns ett tal −x sådant att −x + x = 0.
Alla dessa egenskaper kan visas utgående ifrån kongruensdefinitionen i nästa
avsnitt.
Moduloaritmetiken för ett positivt heltal k > 1 kommer att se helt olika
ut beroende på om k är ett primtal eller inte. En viktigaste skillnaden är att
nollproduktregeln
xy = 0 ⇔ x = 0 ∨ y = 0
gäller bara om k är ett primtal (om till exempel k = 6 så blir produkten av 2
och 3 lika med noll).
1
För att visa att definitionen är meningsfull borde man egentligen visa att resultatet av
additionen blir detsamma oberoende av vilka representanter a och b man väljer ur restklasserna som adderas.
30
Kongruens Två tal m och n som ger samma rest vid division med ett tal k
sägs vara kongruenta modulo k. Detta skrivs traditionellt
m ≡ n (mod k)
men vi väljer skrivsättet
m ≡k n
som är lättare att hantera i härledningar.
Påståendet m ≡k n betyder att m och n hör till samma restklass modulo k.
Till exempel gäller 39 ≡12 15 eftersom 39 och 15 båda ger resten 3 vid division
med 12.
Kongruens modulo k kan definieras matematiskt exakt med hjälp av delbarhet:
m ≡k n ⇔ k | (m − n)
Exemplet ovan är lätt att kontrollera på detta sätt: 39 − 15 = 24 och 24 är
delbart med 12.
Tre grundläggande egenskaper visar att kongruenser är ett slags likhet
• reflexivitet: a ≡k a,
• symmetri: a ≡k b ⇒ b ≡k a , och
• transitivitet: a ≡k b ∧ b ≡k c ⇒ a ≡k c.
Till exempel reflexiviteten är lätt bevisad:
a ≡k a
⇔
{definitionen av kongruens}
k | (a − a)
⇔
{förenkla}
k|0
⇔
{alla tal delar 0}
T
Övriga användbara regler är bland andra
1. additionsregeln: a ≡k b ⇒ a + m ≡k b + m,
31
5 Kongruenser och moduloaritmetik
2. multiplikationsregeln: a ≡k b ⇒ ma ≡k mb,
3. potenseringsregeln: a ≡k b ⇒ am ≡k bm ,
4. divisionsregeln: om ma ≡k mb ⇒ a ≡k b om sgf(m, k) = 1.
Med reglerna kan man göra dramatiska kongruensförenklingar, i stil med att
3200 ≡8 1. Detta följer av att 3200 = 32·100 = (32 )100 och
3200
=
{exponentregler}
(32 )100
≡8 {potensregeln, 32 = 9 ≡8 1}
1100
=
{förenkla}
1
Märk hur kongruenssymbolen används i härledningen.
Sista siffran i ett tal Kongruens modulo 10 kan användas för att avgöra den
sista siffran i ett tal. Eftersom
6 · 6 = 36 ≡10 6
ser man att 6n kommer att sluta på en sexa, för alla heltal n. På samma sätt
slutar alla potenser av 5 på en femma, medan sista siffran potenserna av 3
kommer att loopa enligt
3, 9, 7, 1, 3, 9, ...
Som exempel söker vi sista siffran i talet 22005 :
22005
=
{exponentregler, 2005 = 4 · 501 + 1}
(24 )501 · 21
≡10 {kongruensregler, 24 = 16 ≡10 6}
6501 · 2
32
≡10 {kongruensregler}
6·2
≡10 {förenkla}
2
I det andra steget ses varför det lönade sig att få fram en faktor 24 : den ger
siffran 6 som sedan är lätt att hantera.
Restsystem och Fermats lilla sats Vi säger att talmängden {a1 , a2 , a3 , . . . , an }
bildar ett fullständigt restsystem modulo n, om varje restklass modulo n förekommer exakt en gång. Ett exempel på ett fullständigt restsystem modulo 4 är
{1, 8, 2, 7}, eftersom resterna vid division med 4 är {1, 0, 2, 3}.
Den aritmetiska talföljden
{a, a + d, a + 2d, . . . , a + (n − 1)d}
bildar också ett fullständigt restsystem modulo n om sgf(n, d) = 1. Det bevisas
på följande sätt: Om talen inte bildade ett fullständigt restsystem så skulle två
av talen vara kongruenta modulo n. Antag att dessa två tal är a+kd och a+md
där det första är mindre än det andra. Då gäller
[a + kd < a + md ≤ a + (n − 1)d, sgf(n, d) = 1]
a + kd ≡n a + md
⇔
{definitionen av kongruens}
n | (a + kd − a − md)
⇔
{förenkla}
n | (k − m)d
⇔
{antagandet sgf(n, d) = 1}
n | (k − m)
⇔
{antagandena ger att k < m < n}
F
33
5 Kongruenser och moduloaritmetik
dvs en motsägelse. Alltså måste talen bilda ett fullständigt restsystem modulo
n.
Välj till exempel n = 5, a = 2 och d = 3. Då får vi att talen {2, 5, 8, 11, 14}
bildar ett fullständigt restsystem modulo 5. Det kan lätt kollas: tar vi resten
vid division med 5 förvandlas talmängden till {2, 0, 3, 1, 4}, dvs hela Z5 .
Man kan också (enkelt) visa att om {a1 , a2 , a3 , . . . , an } bildar ett fullständigt
restsystem modulo n och sgf(n, b) = 1 så bildar också
{ba1 , ba2 , ba3 , . . . , ban }
ett fullständigt restsystem modulo n.
Nu kan vi formulera Fermats lilla sats:
Om p är ett primtal och n inte är delbart med p så gäller np−1 ≡p 1
Beviset utnyttjar att sgf(n, p) = 1 och att talen {0, n, 2n, . . . , (p − 1)n} bildar
ett fullständigt restsystem modulo n (beviset lämnas som en övning åt läsaren,
se uppgifterna).
Till exempel kan man nu beräkna resten då 92005 divideras med 13, genom
att i Fermats lilla sats välja p till 13 och n till 9:
92005
=
{exponentregler, 2005 = 12 · 167 + 1}
(912 )167 · 91
≡13 {enligt Fermats lilla sats gäller 912 ≡13 1, kongruensregler}
(112 )167 · 9
=
{förenkla}
9
vilket visar att då 92005 divideras med 13 blir divisionsresten 9.
Uppgifter
1. Beräkna i klockaritmetiken
a) 5 − 9
(b) 3 · 5
(c) 7 · 5 + 9
2. Lös följande ekvationer i klockaritmetiken (lämpligen genom en kombination av faktorisering och försök-och-misstag):
34
(b) x2 = 0
a) 5 + x = 0
(c) x2 = x
3. Visa att i klockaritmetiken gäller 6 · 4 = 0. För vilka andra talpar (x, y) i
klockaritmetiken gäller xy = 0 trots att varken x eller y är 0?
4. Föregående uppgift visar att nollproduktregeln inte gäller i klockaritmetiken. Motivera varför additionens nollregel trots allt gäller, dvs att varje
tal x har en unik invers x sådan att x + x = 0.
5. Varför infaller julafton alltid samma veckodag som den första oktober?
6. Gör upp en additions-, en subtraktions- och en multiplikationstabell för
arimetiken modulo 2.
7. Om 0 tolkas som F (falskt) och 1 som T (sant), vilka logiska operationer
kommer räkneoperationerna i föregående uppgift då att motsvara?
8. Gör upp additions- och multiplikationstabeller för Z4 och för Z5 .
9. Lös följande ekvationer, dels i Z4 och dels i Z5 :
a) 3 + x = 2
(b) 3x = 2
(c) 2x = 3
(d) x2 = 0
Använd tabellerna från föregående uppgift.
10. Vilket är det minsta ickenegativa heltal x som uppfyller
a) 45 ≡12 x
(b) −23 ≡7 x
(c) x ≡5 1324
11. Vilket är det motsatta talet i Z15 till
a) 14
(b) 5
(c) x?
12. Visa att om k inte är ett primtal så finns det två tal m 6= 0 och n 6= 0 i
Zk sådana att mn = 0. Använd argumentet för att hitta två sådana tal i
Z6 och i Z8 .
13. Hur många talpar (m, n) med m 6= 0 och n 6= 0 sådana att mn = 0 finns
det i Z30 ?
14. Bevisa transitivitetsregeln för kongruenser.
15. Bevisa kongruensernas
a) additionsregel
(b) multiplikationsregel
16. Bevisa kongruensernas potenseringsregel (med induktion, dvs visa först
att den gäller för n = 0 och sedan att om den gäller för n = m så gäller
den också för n = m + 1).
35
5 Kongruenser och moduloaritmetik
17. Visa att om a ≡k b och c ≡k d så gäller
a) a + c ≡k b + d
(b) ac ≡k bd.
18. Visa att om n är ett heltal så är n3 + 2n delbart med 3. Tips: beakta tre
olika alternativ.
19. Visa att konguensekvationen x2 =3 2 saknar lösningar.
20. Visa att om {a1 , a2 , a3 , . . . , an } bildar ett fullständigt restsystem modulo
n och sgf(n, b) = 1 så bildar också
{ba1 , ba2 , ba3 , . . . , ban }
ett fullständigt restsystem modulo n.
21. Bestäm divisionsresten då
a) 72006 divideras med 13
(b) 132006 divideras med 7.
22. Sök lösningar (x, y, z) sådana att sgf(x, y) = sgf(y, z) = sgf(x, z) = 1 till
Pythagoras ekvation x2 + y 2 = z 2 i följande steg:
a) Visa att z måste vara udda och det ena av x och y udda och det
andra jämnt.
b) Antag att y är jämnt och skriv om ekvationen i formen (2u)2 =
z 2 − x2 .
z+x
c) Visa att både z−x
2 och 2 måste vara kvadrater.
d) Visa att lösningarna måste vara på formen x = m2 − n2 , y = 2mn
och z = m2 + n2 (eller x och y ombytta).
e) Visa att alla sådana (x, y, z) som nämns i (d) faktiskt är lösningar.
23. Bevisa Fermats lilla sats.
36
6 Kryptering
Kryptering (chiffrering) innebär att ett meddelade omvandlas till en form som
döljer det egentliga innehållet för utomstående, men så att mottagaren kan få
fram det ursprungliga innehållet.
Klassiska krypteringssystem Matematiskt kan kryptering beskrivas som att
meddelandet x ges som argument till en krypteringsfunktion f och det krypterade meddelandet f (x) sedan av mottagaren dekrypteras (dechiffreras) med
en nyckel som är inversen f −1 av f . Då återfås det ursprungliga meddelandet
eftersom f −1 (f (x)) = x (detta illustreras i Figur 6.1).
f
x
y
f
−1
Figur 6.1: Kryptering och dekryptering.
Klassisk kryptering skedde tecken för tecken. Det finns många olika specialknep för att dölja det verkliga innehållet (osynligt bläck, extra bokstäver,
mm). Caesars metod var att identifiera varje tecken med ett tal och använda
y = (x + k) mod m
som krypteringsfunktion, där m är antalet olika tecken och additionen alltså
sker modulo m. Här används mod som en operation, x mod y betyder “resten
då x divideras med y (till exempel gäller 8 mod 3 = 2 och 28 mod 7 = 0).
Restoperationen kan definieras matematisk exakt enligt följande:
m mod k = n ⇔ m ≡k n ∧ 0 ≤ n < k
Om det svenska alfabetets 29 bokstäver kodas enligt
A = 1, B = 2, . . . , P = 16, . . . , Ö = 29
37
6 Kryptering
och k = 5 så kommer ordet APA att krypteras till FUF, eftersom koden
(1, 16, 1) förvandlas till (6, 21, 6).
För att kunna dekryptera ett sådant Caesarchiffer behöver mottagaren bara
känna till m och k. Dekrypteringen sker enligt
x = (y − k) mod m
Med k = 5 dekrypteras FUF till APA eftersom koden (6, 21, 6) förvandlas till
(1, 16, 1).
Säker kryptering med hemlig nyckel System som krypterar tecken för tecken
med oförändrad nycket är osäkra, eftersom man kan analysera vilka tecken som
förekommer ofta i det krypterade meddelandet och jämföra med statistik över
bokstävers frekvenser i det aktuella språket.
Ett sätt att förbättra säkerheten är nyckeln systematiskt ändrar från tecken
till tecken. Tex kan man tänka sig att Caesarchiffret får en tredje parameter d
som anger en förflyttning “högerut” för varje tecken:
y(n) = (x(n) + k + nd) mod m
där n anger tecknets nummer. Om k = 1 och d = 3 så kommer APA att
krypteras till BTH.
Ett annat sätt är att först koda om meddelandet i talform och sedan göra
någon (inverterbar) matematisk transformation på talet. Man kan tex koda A
som 00, B som 01, osv. Då blir “Övis” talet 27200919. Nästa steg kan vara
något slags permutaterande operation, tex att man turvis tar siffror från slutet
och från början. Resultatet blir då 92179200. Dekrypteringen behöver då bara
utföra “inversen” till krypteringen.
En annan möjlighet är att på samma sätt förvandla texten till talform och
att sedan utföra en aritmetisk operation som tex
f (s) = (7s + 3) mod 10
på varje siffra s. Denna funktion är inverterbar, eftersom varje siffra förekommer
exakt en gång bland f (0), . . . , f (9). Tex krypteras 6 till 5 och 5 dekrypteras till
6.
Gemensamt för detta slags kryptering är att så länge nyckeln hålls hemlig
(och inte är så enkel som i exemplen ovan) så är det mycket tidsödande att
knäcka den. Under andra världskriget använde den tyska militären en mycket avancerad form av kryptering med hemliga nycklar, automatiserad med
den såkallade Enigmamaskinen som systematiskt ändrade sina krypteringsparametrar. Britterna kom över ett exemplar av maskinen och lyckades med en
38
enorm arbetsinsats knäcka koden. En betydande insats gjordes av filosofen och
matematikern Alan Turing: han konstruerade ett slags dator, “the Bombe”, som
analyserade meddelanden.
Kryptering med offentlig nyckel På 1970-talet startade en revolution inom
kryptografi, dvs vetenskapen om kryptering (ett delområde på gränsen mellan
matematik och datateknik). Grundstenen var inverterbara såkallade envägsfunktioner (one-way functions). En envägsfunktion f är sådan att funktionsvärden y = f (x) lätt kan beräknas men att inversa värden x = f −1 (y) i praktiken
är omöjliga att beräkna, trots att funktionen f är känd.
En ofta använd krypteringsmetod är RSA, namngiven efter de personer som
skapade den (Rivest, Shamir, Adleman). Metoden är baserad på att det är
lätt att multiplicera två stora primtal, men att det är oerhört tidsödande att
faktorisera produkten.
Om en person A (Alice) vill skicka ett meddelande åt B (Bob) väljer hon två
stora primtal p och q, och ett tredje tal e som uppfyller
sgf(e, (p − 1)(q − 1)) = 1
Alice bildar sedan produkten N = pq och meddelar talen N och e till alla
intresserade - de utgör den offentliga nyckeln (public key) till hennes krypteringsmetod.
Sin dekrypteringsnyckel (den privata nyckeln) får Alice genom att hitta ett
tal d som uppfyller
de ≡(p−1)(q−1) 1
och det hittas lätt via en diofantisk ekvation (se uppgift 7, villkoret sgf(e, (p −
1)(q − 1)) = 1 garanterar att ett sådant tal d finns). Eftersom ingen annan än
Alice känner till talen p och q är talet d hemligt.
Nu krypterar Bob sitt meddelande genom att först skriva om det i talform
som talet M och sedan beräkna motsvarande kod:
C = M e mod N
Då Alice skall dekryptera C behöver hon bara beräkna
M = C d mod N
(se uppgift 9).
39
6 Kryptering
Ett litet krypteringsexempel RSA-metoden illustreras med ett enkelt exempel, där p och q väljs små. Alice väljer p = 11 och q = 17. Då blir N = 187
och som e kan Alice lämpligen välja 7, eftersom (p − 1)(q − 1) = 160 och
sgf(7, 160) = 1.
Talet d skall uppfylla 7d ≡160 1, vilket kan omvandlas till den diofantiska
ekvationen 7d + 160x = 1 (se uppgifterna) och har lösningen d = 23.
Nu vill Bob skicka en kyss (bokstaven X, som motsvarar talet 24 eftersom X
är den tjugofjärde bokstaven i alfabetet) till Alice. Han beräknar 247 mod 187.
Detta kan visserligen göras direkt, men krypteringsprogram som arbetar med
mycket stora tal arbetar i praktiken enligt följande systematiska arbetssätt: Då
7 = 4 + 2 + 1 beräknar man
först 241 ≡187 24,
sedan 242 = 24 · 24 ≡ 576 ≡187 15,
sedan 244 ≡187 152 = 225 ≡187 38
och slutligen
247 = 244 · 242 · 241 ≡187 24 · 15 · 38 = 13680 ≡187 29
Det betyder att 247 mod 187 = 29 och det krypterade meddelandet är alltså
talet 29.
Alice får meddelandet i form av talet 29 och dekrypterar nu genom att beräkna 2923 (mod187). Via 23 = 16 + 4 + 2 + 1 fås (liksom ovan)
291 ≡187 29
292 ≡187 93
294 ≡187 932 ≡187 47
298 ≡187 472 ≡187 152
2916 ≡187 1522 ≡187 103
och hon får fram meddelandet i talform:
2923 = 2916+4+2+1 ≡187 29 · 93 · 47 · 103 ≡187 24
och talet 24 är precis bokstaven X, som Bob skickade!
40
Uppgifter
1. Det svenska alfabetet har 29 bokstäver (q och w medräknade). Ett Caesarchiffer med nyckeltal 13 kommer då att koda så här
A
Ä
N
L
B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å
Ö
O P Q R S T U V W X Y Z Å Ä Ö A B C D E F G H I J K
M
a) Chiffrera meddelandet “Örnen har landat.”
b) Dechiffrera meddelandet “Wnt smbcdkb.”
2. I texten beskrevs kryptering enligt Caesarchiffer med en tredje parameter
d som anger en förflyttning “högerut” för varje tecken:
y(n) = (x(n) + k + nd) modm
där n anger tecknets nummer. Visa att om k = 1 och d = 3 så kommer
APA att krypteras till BTH. Hur skall meddelandet dekrypteras?
3. Använd den permuterande siffermetod som beskrivs i texten för att kryptera meddelandet “Allt klart” (hur kan man göra med mellanslaget i det
här fallet?). Dekryptera sedan och beskriv dekrypteringsalgoritmen.
4. Använd den metod med funktionen f (s) = (7s + 3) mod10 som beskrivs
i texten för att kryptera och sedan dekryptera meddelandet “Klart slut”.
5. Visa att funktionen f (s) = (9s + 2) mod10 är inverterbar, då s är en siffra
(dvs 0,1,...,9). Inversen kan beskrivas med en tabell (gör det!), men lyckas
du också beskriva den matematiskt? Varför är denna funktion olämplig
för kryptering?
6. Ge ett exempel på en funktion g(s) = (as + b) mod10 som är inverterbar
för siffrorna s = 1, . . . , 9 (där a är varken 7 eller 9).
7. Omskriv följande kongruensekvationer till diofantiska ekvationer genom
att använda definitionen av kongruens:
a) x ≡38 1357
(b) 7x ≡120 1
8. Antag att Alice väljer p = 11 och q = 13 och e = 7. Bestäm Alices privata
nyckel genom att lösa kongruensekvationen 7x ≡120 1.
41
6 Kryptering
9. Ett specialfall av Eulers sats säger att om p och q är primtal och r =
(p − 1)(q − 1) så gäller
a1+kr ≡pq a
för vilket tal k som helst. Använd detta för att visa att RSA-dekrypteringen
faktiskt ger tillbaka det ursprungliga meddelandet, dvs visa att om N =
pq och de ≡(p−1)(q−1) 1 och y ≡N xe och z ≡N y d så gäller y = x.
10. Antag att Alice väljer p = 13 och q = 19 för sin RSA-kryptering
a) Vilket är talet N i hennes offentliga nyckel?
b) Välj ett lämpligt tal e för Alices offentliga nyckel, och
c) bestäm sedan talet d för hennes privata nyckel.
11. Kryptera bokstaven Ö enligt RSA-exemplet i föregående uppgift, och dekryptera sedan resultatet (som kontroll).
42
Litteraturförteckning
[1] R. J. Back, M. Sjöberg, and J. von Wright. Field tests of the structured
derivations method. Tech. Rpt. 491, Turku Centre for Computer Science,
November 2002.
[2] Ralph-Johan Back. Matematik med litet logik: Introduktion till strukturerade härledningar. TUCS Lecture Notes 7, Abo Akademi, Dept of
Information Technologies, October 2008.
[3] Ralph-Johan Back. Matematik med litet logik: Logik för strukturerade
härledningar. TUCS Lecture Notes 8, Abo Akademi, Dept of Information
Technologies, October 2008.
[4] Ralph-Johan Back. Matematik med litet logik: Strukturerade härledningar
som allmänt bevisformat. TUCS Lecture Notes 9, Abo Akademi, Dept of
Information Technologies, October 2008.
[5] Ralph-Johan Back, Jim Grundy, and Joakim von Wright. Structured calculation proof. Formal Aspects of Computing, 9:469–483, 1997.
[6] Ralph-Johan Back, Mia Peltomäki, Tapio Salakoski, and Joakim von
Wright. Structured derivations supporting high-school mathematics. In
A. Laine, J. Lavonen, and V. Meisalo, editors, Proceedings of the 20th Annual Symposium of the Finnish Mathematics and Science Education Research Association, Research Report 253, pages 104–122, Helsinki, Finland,
2004. Department of Applied Sciences of Education, University of Helsinki.
[7] Ralph-Johan Back and Joakim von Wright. Doing high school mathematics
carefully. TUCS Technical Report 140, TUCS - Turku Centre for Computer
Science, 1997.
[8] Ralph-Johan Back and Joakim von Wright. Refinement Calculus: A Systematic Introduction. Springer-Verlag, 1998. Graduate Texts in Computer
Science.
[9] Ralph-Johan Back and Joakim von Wright. A method for teaching rigorous
mathematical reasoning. In Proceedings of Int. Conference on Technology
of Mathematics, University of Plymouth, UK, Aug 1999.
43
Litteraturförteckning
[10] Ralph-Johan Back and Joakim von Wright. Matematik med lite logik:
En kort kurs i talteori. TUCS Lecture Notes 2, Abo Akademi, Dept of
Information Technologies, October 2008.
[11] Ralph-Johan Back and Joakim von Wright. Matematik med litet logik:
Strukturerade härledningar i gymnasiematematiken. TUCS Lecture Notes 1, Abo Akademi, Dept of Information Technologies, October 2008.
[12] Ralph-Johan Back and Joakim von Wright. Matematik med litet logik:
Studentexamen i lång matematik, våren 2003. TUCS Lecture Notes 3,
Abo Akademi, Dept of Information Technologies, October 2008.
[13] R.J. Back, T. Kavander, M. Nylund, M. Peltomäki, T. Salakoski, and
J. von Wright. Teaching high-school mathematics with structured derivations in hypertext format). In International Conference on Computer
Systems and Technologies – CompSysTech, Sofia, Bulgaria, June 2002.
[14] Edsger W. Dijksta and C. S. Scholten. Predicate Calculus and Program
Semantics. Springer-Verlag, 1990.
[15] E.W. Dijkstra. The notational conventions i adopted, and why. Formal
Aspects of Computing, 14:99 – 107, 2002.
[16] A. J. M. van Gasteren. On the Shape of Mathematical Arguments. Lecture
Notes in Computer Science. Springer-Verlag, Berlin, 1990.
44
Turku Centre for Computer Science
TUCS Lecture Notes
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Ralph-Johan Back och Joakim von Wright, Matematik med lite logik:
Strukturerade härledningar i gymnasiematematiken
Ralph-Johan Back och Joakim von Wright, Matematik med lite logik: En kort
kurs i talteori
Ralph-Johan Back och Joakim von Wright, Matematik med lite logik:
Studentexamen i lång matematik, våren 2003
Ralph-Johan Back och Joakim von Wright, Matematiikkaa logiikan avulla:
Rakenteiset päättelyketjut lukiomatematiikassa
Ralph-Johan Back och Joakim von Wright, Matematiikkaa logiikan avulla:
Lyhyt lukuteorian kurssi
Ralph-Johan Back och Joakim von Wright, Matematiikkaa logiikan avulla:
Pitkän matematiikan ylioppilaskoe, kevät 2003
Ralph-Johan Back, Matematik med lite logik: Introduktion till strukturerade
härledningar
Ralph-Johan Back, Matematik med lite logik: Logik för strukturerade
härledningar
Ralph-Johan Back, Matematik med lite logik: Strukturerade härledningar som
allmänt bevisformat
Ralph-Johan Back, Matematiikkaa logiikan avulla: Johdatus rakenteisiin
päättelyketjuihin
Ralph-Johan Back, Matematiikkaa logiikan avulla: Logiikka ja rakenteiset
päättelyketjut
Ralph-Johan Back, Matematiikkaa logiikan avulla: Rakenteiset päättelyketjut
yleisenä todistusmuotona
Turku
Centre for
Computer
Science
Joukahaisenkatu 3-5 B, 20520 Turku, Finland | www.tucs.fi
University of Turku
l
Department of Information Technology
l
Department of Mathematics
Åbo Akademi University
l
Department of Information Technologies
Turku School of Economics
l
Institute of Information Systems Sciences
ISBN 978-952-12-2175-0
ISSN 1797-8831
Back & von Wright
Matematik med lite logik: En kort kurs i talteori