Matematik
Et par opgaver om primtal
Definition
Et heltal p > 1 kaldes et primtal, hvis div(p) = {1,p}, dvs. hvis p kun har de naturlige divisorer 1 og p.
Ethvert heltal, n >= 1 er et produkt af primtal; en sådan primfaktorisering er endda entydig (op til omordning af faktorerne). Et positivt heltal, der ikke er et primtal, kaldes et sammensat tal.
OPGAVE 1
Et tal på formen M_n = 2^n - 1 kaldes et Mersenne-tal. Specielt hvis 2^n - 1 er et primtal, kaldes tallet et Mersenne-primtal.
a)
Vis, at hvis Mersenne-tallet M_n er et primtal, så er n et primtal.
Vink: antag, at n er sammensat og søg en modstrid.
b)
Er M_n et primtal, hvis n er et primtal?
OPGAVE 2
Det n'te Fermat-tal F_n, n >= 0, er defineret som
F_n = 2^(2^n) + 1
a)
Vis, at F_0, F_1 og F_2 er primtal.
Følgen af Fermat-tal vokser meget hurtigt; allerede fra og med n = 3 bliver det hurtigt surt at undersøge, om F_n er et primtal. Fermat påstod selv i 1650, at ethvert F_n er et primtal. Næsten et århundrede senere, i 1739, påviste Euler som den første, at F_5 ikke er et primtal. Den dag i dag vides det ikke, om der findes et Fermat-tal F_n, n > 4, som er et primtal.
b)
Vis, at F_5 = 2^32 + 1 ikke er et primtal ved at bruge følgende vink:
1) 5^4 + 2^4 = 1 + 5(2^7)
2) F_5 = (5^4 + 2^4)(2^7)^4 + "noget"
Til dem, som bare ikke kan få nok af opgaver, er her en lille tillægsopgave i tilknytning til opgave 1 ovenfor.
Lad a,n > 1 være heltal.
1c)
Vis, at hvis a^n - 1 er et primtal, så er a = 2, og n er et primtal.
Hvis ikke der i tråden indløber forslag til besvarelse af opgaverne, regner jeg med at poste vejledende forslag, når weekenden er ved at være omme, eventuelt en dag eller to senere. Og nu ikke noget med at snyde (kontaktpersoner mv.); det er sjovest selv at løse opgaverne :-)
God fornøjelse!
//Epsilon
Svar #1
25. september 2005 af fixer (Slettet)
a) Antag M_n er et primtal, altså at div(M_n)={1,M_n}.
Antag dernæst at n ikke er et primtal. Da vil n have divisorer p og q, begge forskellige fra 1 og n, således at
n=pq
Men da
M_n = 2^n-1 <=>
M_n = 2^(pq)-1 <=>
M_n = ((2^p-1)+(2^p-1)2^q+(2^p-1)2^(2q)+...+(2^p-1)2^(p(q-1))) <=>
M_n = (2^p-1)(1+2^q+2^(2q)+...+2^(p(q-1))
ses at M_n har divisorerne (2^p-1) og (1+2^q+2^(2q)+...+2^(p(q-1))) i strid med antagelsen om at div(M_n)={1,M_n}.
Under forudsætning af, at M_n er et primtal, fører antagelsen om at n ikke er et primtal således til en modstrid. Heraf slutter vi at hvis M_n er et primtal, da er n ligeså.
b) Nej. Til eksempel er M_11=2047=89*23.
Svar #2
25. september 2005 af Epsilon (Slettet)
Korrekt. Opgaverne var nu ganske rigtigt oprindeligt tiltænkt gymnasieelever, så hvis universitetsfolk vil løse opgaverne, bedes de holde sig i baggrunden og vente, til eleverne har haft en chance.
//Epsilon
Svar #3
25. september 2005 af Epsilon (Slettet)
OPGAVE 3
a)
Vis, at hvis 2^n + 1 er et primtal, så er n en potens af 2 (læs: n = 2^k for et heltalligt k >= 0).
Vink: se på n = rs, 1
Bemærk: ovennævnte (korrekte) påstand er den omvendte til Fermats påstand. Sidstnævnte er jo som bekendt falsk (F_5 er ikke et primtal, jf. opgave 2).
b)
Vis, at Fermat-tallene opfylder
F_n = F_0*F_1*F_2*...*F_(n-1) + 2 (*)
for ethvert n >= 1.
Vink: induktion. Husk, hvorledes F_n er defineret.
Anm:
(*) er et eksempel på en såkaldt rekurrensrelation; det n'te Fermat-tal kan beregnes af de foregående (rekursivt).
//Epsilon
Svar #4
26. september 2005 af Epsilon (Slettet)
//Epsilon
Svar #5
26. september 2005 af x^n+y^n=z^n (Slettet)
F_n=F_0*F_1...*F_(n-1)+2 , dermed:
F_(n+1)=F_0*F_1...*F_n , og dermed må
F_(n+1)=(F_n-2)*F_n+2
F_(n+1)=(F_n)^2-2*F_n+2 (*)
Af formlen for Fermat-tal har man:
F_(n+1)=(2^(2^(n+1))+1)^2 ,og
F_n=2^(2^n)+1
og det kan udregnes at (*) passer
Svar #6
26. september 2005 af fixer (Slettet)
En genopfriskning er måske velanbragt:
Induktion er en bevisteknik oftest brugt til at bevise at et givet udsagn P(n) er sandt for all naturlige tal n.
Der findes generaliseringer af teknikken, men den helt simple, der tænkes anvendt her, har to trin.
a) Vis at P(n) er sand for n=0.
b) Vis at hvis P(n) er sand, så er P(n+1) også sand.
Beviset består altså i først at vise at udsagnet er sand for en given begyndelsesværdi (ikke nødvendigvis n=0), og dernæst vise at metoden hvorved man kommer fra een værdi til den følgende er gyldig.
Princippet kan illustreres med et eksempel.
Vi betragter potensrækken
s = sum[i=0->n]{a^i), a E R+
og vi ønsker at bevise at for all n>=0 er
s = (1-a^(n+1))/(1-a)
Hertil danner vi udsagnet
P(n) : s = (1-a^(n+1))/(1-a)
Det ses at P(0) er sand, thi
s=sum[i=0->0]{a^i} = a^0 = 1 = (1-a^(0+1))/(1-a)
Antag nu at P(n) er sand. Så gælder at
sum[i=0->n+1]{a^i}=
sum[i=0->n]+a^(n+1)=
(1-a^(n+1))/(1-a)+a^(n+1) =
(1-a^(n+1)+a^(n+1)-a^((n+1)+1)))/(1-a) =
(1-a^((n+1)+1)))/(1-a)
Men dette er udsagnet for P(n+1). Vi har ikke bevist at det er sandt; vi har vist, at under forudsætning af at P(n) er sand, så er P(n+1) også sand. Vi har altså vist at
P(n) => P(n+1) (*)
Men ifølge induktionsaksiomet kan vi af denne implikation medsamt beviset for at P(0) er sand slutte, at P(n) er sand for alle naturlige tal.
Induktionsaksiomet udtrykker blot følgende logiske kæde:
1) Vi ved at P(0) er sand, derfor er P(1) sand (*)
2) Vi ved at P(1) er sand, derfor er P(2) sand (*)
:
:
Svar #7
26. september 2005 af x^n+y^n=z^n (Slettet)
F_0=3
F_1=5
og F_1=F_0+2
og dermed er a) bevist
Svar #8
26. september 2005 af Epsilon (Slettet)
Du mangler nu blot at bevise b) i #6. Lad os med P(n) betegne udsagnet:
P(n): F_n = F_0*F_1*F_2*...*F_(n-1) + 2 (*)
Vi ser, at P(1) gælder, idet
F_1 = 2^(2^1) + 1 = (2^(2^0) + 1) + 2 = F_0 + 2
(hvilket du har indset).
Lad os nu antage, at (*) gælder for et bestemt n; lad os sige n = k. Du skal nu under brug af denne antagelse vise, at
P(k) => P(k+1)
altså, at
F_(k+1) = F_0*F_1*F_2*...*F_(k) + 2 (**)
Prøv, om ikke du kan få vist (**). Opskriv F_(k+1) direkte ud fra definitionen og regn videre derudfra.
//Epsilon
Svar #9
27. september 2005 af x^n+y^n=z^n (Slettet)
F_(k)=F_0*F_1*F_2*...*F_(k-1)+2 , og
F_(k+1)=F_0*F_1*F_2*...*F_(k)+2
jeg erstater så F_0*F_1*F_2*...*F_(k-1) med (F_(k)-2):
F_(k+1)=(F_(k)-2)*F_(k)+2
F_(k+1)=(F_k)^2-2*(F_k)+2 (*)
det kan bevises at:
F_(k+1)=2^(2^(k+1))=(2^(2^(k)))^2
og vi ved at:
(F_k)^2=(2^(2^(k))+1)^2
(2^(2^(k))+1)^2=(2^(2^(k))^2+2*(2^(2^(k)))+2
og man kan nu se at (*) er sand
Svar #10
27. september 2005 af x^n+y^n=z^n (Slettet)
(a^n)-1=(((a-1)+1)^n)-1
dette er lig med:
(k1*(a-1)^n+k2*(a-1)^(n-1)+...+1)-1
hvor k'erne er binomialkoefficienter. Det ses at a-1 går op i dette, og derfor skal a være 2, hvis (a^n)-1 skal være primtal.
Hvis n ikke er et primtal kan det skrives som produkt af to tal:
n=r*s, dermed har man:
((a^r)^s)-1, som (a^r)-1 går op i.
Derfor må a være 2, og n et primtal, hvis (a^n)-1 er et primtal.
Svar #11
27. september 2005 af Epsilon (Slettet)
Du er på rette vej, men det er ikke korrekt, at
F_(k+1) = (2^(2^k))^2
Du mener vel, at
F_(k+1) = (2^(2^k))^2 + 1
men dette følger umiddelbart af definitionen på det (k+1)'te Fermat-tal. Lad os regne på F_(k+1);
F_(k+1) =
2^(2^(k+1)) + 1 =
(2^(2^k))^2 + 1 =
(F_k - 1)^2 + 1 =
(F_k)(F_k - 2) + 2
Benyt nu induktionsantagelsen. Bemærk, at du faktisk var nået til netop dette skridt i #5.
#10:
Fremgangsmåden med binomialformlen er korrekt. Vi mangler nu blot et afsluttende argument for, at a = 2.
At n er et primtal, følger direkte af OPGAVE 1 a), da vi nu ved, at a = 2.
Man behøver ikke binomialformlen for at vise, at a = 2; men af hensyn til andre, som måske har fundet et meget nært beslægtet argument, venter jeg lidt med at nævne, hvad jeg havde i tankerne.
I øvrigt er der forhåbentlig nogle, som har mod på at byde ind på OPGAVE 2 eller OPGAVE 3 a).
//Epsilon
Svar #12
27. september 2005 af allan_sim
Svar #14
27. september 2005 af Epsilon (Slettet)
Du er i hvert fald ikke gymnasieelev (cf. #2) ;-)
Men jeg vil nu erklære ballet åbent for alle, hvad angår de resterende opgaver; det ser alligevel ikke ud til, at andre har haft lyst til at byde ind de foregående dage.
//Epsilon
Svar #15
28. september 2005 af DMUS (Slettet)
Opgave 2 a:
Hvordan viser jeg at Fermat tallet F_0, F_1 og F_2 er primal?
F_n = 2^(2^n) + 1
F_0 = 2+1 = 3
F_1 = 2^2+1 = 5
F_2 = 2^4+1 = 17
Man kan jo ikke bare skrive at: Det ses at kun tallet 1, og tallet selv går op, hvilket slutter det er et primtal?
Opstiller man, et udtryk som godtgør at det ikke er normale tal der kan sammenskrives ved n=p*q, eller hvordan griber jeg det an?
Svar #16
28. september 2005 af Epsilon (Slettet)
De fleste ville nu nok godtage, at det umiddelbart ses, at 3,5 og 17 er primtal.
Men lad mig da bringe den præcise definition på banen:
Antag, at a = bc, hvor a,b,c E Z (a,b og c er hele tal). Så siger vi, at c går op i a *), og vi skriver dette således: c|a.
Vi skal vise, at div(F_n) = {1,F_n}, n = 0,1,2. Vi har
F_0 = 3 = bc
F_1 = 5 = b'c'
F_2 = 17 = b''c''
hvor 1 =
Men nu er det let; de eneste tal, c blandt 1,2 og 3, som dividerer F_0, er c = 1 og c = 3 = F_0. Så F_0 er et primtal. Tilsvarende går det med 5 og 17. Man tjekker ganske enkelt, at hvert af de tre F_n'er ikke kan skrives som et produkt af to positive heltal, som begge er mindre end F_n. Thi så må F_n jo være et primtal.
I denne anledning vil jeg lige omtale en smuk klassisk metode, som kaldes "Eratosthenes' si", hvormed man i princippet kan generere en liste af (små) primtal. Det er uhyre simpelt: start med at liste de naturlige tal > 1:
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,...
Slet alle tallene, som er divisible med 2 (på nær 2 selv). Tag det næste tal i rækken, som ikke er slettet (3), slet derpå alle tal, som er divisible med 3 (på nær 3 selv) og så fremdeles. De resterende tal:
2,3,5,7,11,13,17,19,23,...
må da præcis være primtallene. Specielt ser vi, at 3,5 og 17 primtal.
*) Synonymt hermed siger man ofte, at c dividerer a eller, at c er en divisor i a.
//Epsilon
Svar #17
28. september 2005 af Epsilon (Slettet)
Det gik vist lidt hurtigt. Således;
" (...), hvormed man kan generere en liste over (små) primtal."
og
" Specielt ser vi, at 3,5 og 17 er primtal. "
//Epsilon
Svar #18
28. september 2005 af DMUS (Slettet)
Har man nogen ide om hvordan euler viste at F_5 ikke var et primtal, eller er det metoden der knytter sig til opg. 2,b?
Svar #19
28. september 2005 af Epsilon (Slettet)
Det afgørende er, at F_n, n = 0,1,2 ikke kan skrives som produkt af to positive _heltal_, der begge er mindre end F_n. Definitionen på, at et tal går op i et andet (jf. #16), er knyttet til heltal. Vi skal ikke have rodet de reelle tal ind i den sag :-)
Jeg har ikke umiddelbart kunnet finde svar på, om det var præcis de i 2b) nævnte observationer, som Euler gjorde.
Men prøv ikke desto mindre at udnytte vinkene til at vise, at F_5 ikke er et primtal.
//Epsilon
Svar #20
28. september 2005 af DMUS (Slettet)
Jeg prøver lige at se på opgave 2b så, men sku ik sikkert jeg når så langt.. :P
