Problem 1 Följande rader i Mathematica är givna SeedRandom[123456 m=table[{random[integer,{0,1000},random[integer,{0,1000}},{i,1,100}; m = CartesianProduct[m, m; Raderna genererar en lista med koordinaterna till 100 punkter i planet. Lägg till en rutin som tar reda på längsta avståndet som förekommer mellan två punkter. För att bestämma avståndet a mellan två punkter p 1 = (x 1,y 1 ) och p 2 = (x 2,y 2 ) använder vi a = (x 1 x 2 ) 2 +(y 1 y 2 ) 2 Lösning: Längsta avståndet är 1679245 1295.86 avst[s_:= Block[{}, Sqrt[Apply[Plus,(s[[1-s[[2)^2 Max[Map[avst,m//N Problem 2 Talet 6 är ett perfekt tal därför att det har delarna 1,2,3,6 och summan av alla delarna är 1+2+3+6 = 12, som är 2 6. Hos ett perfekt tal n är summan av alla delare 2n. Ta reda på alla perfekta tal < 10000. Funktionen Divisors i Mathematica är värd att titta närmare på. Lösning: Talen vi söker är 6,28,496,8128. Select[Range[10000,Apply[Plus,Divisors[#== 2*# & Problem 3 Ta reda på vilka tal < 10 9 i Fibonacci s sekvens som är primtal Lösning: Talen vi söker är 2,3,5,13,89,233,1597,28657,514229,433494437 m=table[fibonacci[i,{i,1,50}; Select[m,PrimeQ[# && #<10^9 & Håkan Strömberg 1 KTH STH
Problem 4 Här är vi på jakt efter tal a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9, där var och en av de 9 siffror 1...9 finns med precis en gång och som är delbart med 9. När man tar bort sista siffran och får talet a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 ska det vara delbart med 8. Talet a 1 a 2 a 3 a 4 a 5 a 6 a 7 ska vara delbart med 7 och så vidare ned till a 1 a 2 som ska vara delbart med 2. Lösning: Det finns bara talet 381654729 f[s_:=block[{ok=true,m=s,i=9}, While[ok && i>0, If[Mod[FromDigits[m,i==0, m=drop[m,{length[m}; i--, ok=false; ; ; i==0 m=permutations[range[9; FromDigits[Flatten[Select[m,f Egentligen behöver men inte testa delbarheten med 3 och 9 eftersom alla tal av den här typen är delbart med dessa tal. Problem 5 När talet 1089 multipliceras med 9 blir produkten 9801. Finns det fler fyrsiffriga tal, som när de multipliceras med ett annat, ger en produkt med det ursprungliga talet vänt bak och fram? Lösning: Det finns bara en lösning till 2178 4 = 8712 s={}; f[t_:=block[{}, For[i=2,i<=9,i++, If[i*t==FromDigits[Reverse[IntegerDigits[t, AppendTo[s,{t,i}; ; ; m = Table[i,{i,1000,9999}; Map[f, m; s Håkan Strömberg 2 KTH STH
Problem 6 Ett tal sägs vara digitalt olika om alla dess ingående siffror är olika. Talet 123 är digital olika, men inte 121. Vi är nu på jakt efter det minsta tal n, där precis hälften av alla tal t,0 < t < n är digital olika Lösning: Svaret är n = 11220 s={}; lika=0; olika=0; For[i=1,i<20000,i++, m=integerdigits[i; If[Length[m==Length[Union[m, lika++, olika++ ; If[lika==olika, AppendTo[s,i s Problem 7 Vilka är talen på formen abbbb 2 1 där a är en siffra och b en annan, där de 10 siffrorna 0...9 ingår precis en gång? Lösning: 85555 2 1 = 7319658024 97777 2 1 = 9560341728 m = {}; For[a = 1, a <= 9, a++, For[b = 0, b <= 9, b++, t = (10000*a + 1111*b)^2-1; n = Length[Union[IntegerDigits[t; If[n == 10, AppendTo[m, {a, b, t}; m Håkan Strömberg 3 KTH STH
Problem 8 Vi letar efter fyrsiffriga tal på formen abcd, där a+b+c+d+ab+bc+cd+abc+bcd är en delare till abcd Lösning: Vi har hittat sex stycken 2388, 3230, 6460, 8358, 9056, 9690 f[n_:=block[{t,s}, s=integerdigits[n; t=apply[plus,s; t=t+fromdigits[take[s,{1,3}+fromdigits[take[s,{2,4}; t=t+fromdigits[take[s,{1, 2}+FromDigits[Take[s,{2,3}+ FromDigits[Take[s,{3, 4}; IntegerQ[n/t m=range[1000,9999; Select[m,f Håkan Strömberg 4 KTH STH
Problem 9 Ta reda på alla tal p < 10000 som är palindromer (har samma värde när de läses baklänges) som förblir palindromer även då de konverteras till binär form. Ett exempel 33 10 = 100001 2. Lösning: 1,3,5,7,9,33,99,313,585,717,7447,9009 f[n_:=block[{t=n,b={}}, While[t>0, AppendTo[b,Mod[t,2; t = Floor[t/2; ; FromDigits[b==FromDigits[Reverse[b m=range[10000; m=select[m, FromDigits[Reverse[IntegerDigits[# == # &; Select[m,f Problem 10 Vi söker de tre minsta, konsekutiva (på varandra följande) udda heltal, a,b,c sådana att a 2 +b 2 +c 2 är unidigital, det vill säga består av en upprepning av samma siffra. Lösning: Vi finner 41 2 +43 2 +45 2 = 5555 f[n_:=block[{}, t=n^2 + (n+2)^2+(n+4)^2; Length[Union[IntegerDigits[t == 1 Select[Range[1,9999,2,f Håkan Strömberg 5 KTH STH
Problem 11 Vilket är det minsta tal bestående av endast 7:or och 3:or (minst en av varje) sådant att talet är delbart med både 3 och 7 och där dessutom siffersumman är delbar med 3 och 7. Lösning: Det eftersökta talet är 3333377733 ok=false; s={3,7}; While[! ok, t=first[s; AppendTo[s,10*t+3; AppendTo[s,10*t+7; s=drop[s,1; ss=apply[plus,integerdigits[t; n=length[union[integerdigits[t; If[Mod[t,7==0 && Mod[t,3==0 && Mod[ss,7==0 && Mod[ss,3==0 && n==2, Print[t; ok = True; Håkan Strömberg 6 KTH STH
Problem 12 R, S och T är tre heltal, 5 R, S, T 5, inte alla lika. Genom att använda följande tre uttryck skapas tre tripplar. (R,S,T) (T, S+2T,R S+T) (R S+T,2R S,R Frågan är nu hur många av dessa som är sorterade, i fallande eller stigande ordning. För varje möjligt val av de tre variblernas värden finns10 möjliga resultat (3,0),(0,3),(2,1),(2,0), (1,2),(0,2),(1,0),(0,1),(1,1),(0,0), (där till exempel (2,1) betyder att två tripplar är sorterade i stigande ordning och en i fallande.) Ta nu för alla möjliga utgångsvärden reda på antalet tripplar för de 10 olika resultaten. Lösning: Endast tre olika resultat förekommer (0,1),(1,0) och (1,1). Antalet tripplar med dessa resultat är 495,495 respektive 330. m = Table[{{r, s, t}, {t, -s+2 t, r-s+t}, {r-s+t, 2r-s,r}}, {r, -5, 5}, {s, -5, 5}, {t, -5, 5}; m2 = Partition[Partition[Flatten[m, 3, 3; f1[m_:=!(m[[1, 1==m[[1, 2 && m[[1, 1==m[[1, 3) m3 = Select[m2, f1; f[s_ := Block[{a1 = 0, a2 = 0}, For[k = 1, k <= 3, k++, If[s[[k == Sort[s[[k, Greater, a1++; If[s[[k == Sort[s[[k, a2++; ; {a1, a2} m4 = Map[f, m3, {1}; m5 = Union[m4 Map[Count[m4, # &, m5 Håkan Strömberg 7 KTH STH
Problem 13 Låt n vara ett icke negativt heltal. Skriv en funktion S(n), som beräknar antalet lösningar till ekvationen x+2y+2z = n för ett givet n, där x, y, z i sin tur är icke negativa heltal. Lösningen ska bestå av en funktion, som tar emot talet n och som returnerar det efterfrågade antalet lösningar. Lösning: s[n_:=block[{a=0}, For[x=0,x<=n,x++, For[y=0,y<=n,y++, For[z=0,z<=n,z++, If[x+2y+2z==n, a++ ; a Table[s[i,{i,1,20} Problem 14 Vilka är de åtta heltalen n 3, sådana att om 1 < k n och gcd(k,n) = 1, så betyder det alltid att k är ett primtal. Lösning: 3,4,6,8,12,18,24,30 m = {}; For[n = 3, n < 100, n++, ok = True; For[k = 2, k <= n, k++, If[GCD[k,n==1 &&!PrimeQ[k, ok=false ; If[ok, AppendTo[m, n m Redan då vi väljer den övre gränsen 99 för vårt sökande får vi 8 tal i svaret och behöver därför inte söka vidare. Det finns heller inga fler tal som stämmer in på villkoren. Håkan Strömberg 8 KTH STH
Problem 15 Vilka värden på d är möjliga då d = gcd(2 m 1,2 n +1) där m < 50 och n 50 är positiva heltal med m udda. Lösning: Endast d = 1. m1 = Table[i, {i, 1, 99, 2}; m2 = Table[i, {i, 1, 50}; m3 = CartesianProduct[m1, m2; f[m_ := GCD[2^m[[1-1, 2^m[[2 + 1 Union[Map[f, m3 Problem 16 Låt p, q < 100 vara två olika, udda primtal med p < q. Betrakta talet R = pq. Det visar sig att man alltid kan finna positiva heltal x, y, u, v, där x > u, så att Bestäm p för de fall då gcd(xy,uv) = 2 Lösning: Vi får p = 3 R = x 2 y 2 = u 2 v 2 m1 = Table[Prime[i, {i, 2, 100}; m2 = CartesianProduct[m1, m1; m21 = Select[m2, #[[1 < #[[2 &; p1 = Map[Apply[Times, # &, m21; m3 = Table[i^2, {i, 100}; m4 = CartesianProduct[m3, m3; m5 = Select[m4, #[[1 > #[[2 &; f1[m_ := {m[[1 - m[[2, m[[1, m[[2} m6 = Sort[Map[f1, m5; m7 = Select[m6, Position[p1, #[[1!= {} && #[[1 < 200 &; m8 = Table[{m7[[i, 1, m7[[i, 2, m7[[i, 3, m7[[i + 1, 2, m7[[i + 1, 3},{i, 1, Length[m7-1, 2}; m9 = Select[m8, GCD[Sqrt[#[[2*#[[3, Sqrt[#[[4*#[[5==2 &; f[m1_ := Block[{m}, m = FactorInteger[m1[[1; m[[1, 1 Union[Map[f, m9 Håkan Strömberg 9 KTH STH
Problem 17 Låt n vara en produkt av fem olika udda primtal. Om a, b, c är siffror och n har de fem siffrorna abcab, där 4 < a < 8, kan du då bestämma n? Lösning: Det finns tre tal med denna egenskap 51051, 57057, 69069 f := Block[{k, m = {}, n, i, l = {}}, For[k = 10000, k <= 99999, k++, m = FactorInteger[k; n = Sum[m[[i, 2, {i, 1, Length[m}; If[n == 5 && Length[m == 5 && m[[1, 1!= 2, d = IntegerDigits[k; If[d[[1==d[[4 && d[[2==d[[5 && d[[1>4 && d[[1<8, AppendTo[l, k ; l f Problem 18 Låt y 1 = x+1 x 1 och y 2 blir det förenklade uttryck som erhålles genom att ersätta x med y 1 i x+1 x 1. Låt sedan y 3 bli det förenklade uttryck som erhålles då y 2 ersätter x i x+1 x 1, och så vidare. Bestäm y 6, y 100, y 501. Lösning: Här tar vi till rekursion. Då index är jämnt får man x annars 1+x x 1 y[1=(x+1)/(x-1); y[n_:=y[n=simplify[(y[n-1+1)/(y[n-1-1) Simplify[y[6 Simplify[y[7 Simplify[y[100 $RecursionLimit =600; Simplify[y[501 Håkan Strömberg 10 KTH STH
Problem 19 Observera att mängden S = {1,2,3,4} kar delas i två delmängder S 1 = {1,4} och S 2 = {3,2}, så att för mängderna gäller S 1 S 2 = S, S 1 S 2 = φ och s S 1 s = s S 2 s. För vilka mängder M n = {1,2,3,...,n} där n = 1...15 är en sådan uppdelning möjlig? Lösning: Uppdelningen är möjlig för Ser du mönstret n = 3,4,7,8,11,12,15,16,... f[n_ := Block[{m1, m2, m3, s}, m1 = Range[n; s = (n + 1)*n/2; m2 = Subsets[m1; m3 = Map[Apply[Plus, # &, m2; MemberQ[m3, s/2 Table[f[i, {i, 1, 16} Problem 20 I denna taltriangel 1 1 1 1 1 2 3 2 1 1 3 6 7 6 3 1 1 4 10 16 19 16 10 4 1 Bildas ett tal genom att summera tre tal i raden ovanför. Talet rakt ovanför, samt talen till höger och vänster om detta. Avsaknaden av ett tal indikerar 0. Skriv en funktion som tar emot ett tal n och som skriver ut den n:te raden. Lösning: Med rekursion får vi detta korta program f[0, 0 = 1; f[n_, m_ := If[m > 2 n m < 0, 0, f[n - 1, m - 2 + f[n - 1, m - 1 + f[n - 1, m g[n_ := Table[f[4, i, {i, 0, n} g[9 som ger den 9:e raden 1,4,10,16,19,16,10,4,1 Håkan Strömberg 11 KTH STH
Problem 21 Det positiva heltalet n har följande egenskaper det finns inget heltal x så att x 2 n för alla primtal p sådana att p n så p 1 n Bestäm alla heltal n 5000 för vilka dessa villkor gäller. Lösning: Talen vi söker är 2,6,42,1806 f[n_ := Block[{m}, m = FactorInteger[n; Apply[And, Map[#[[2 == 1 &, m g[n_ := Block[{m, m2, ok, k}, m = FactorInteger[n; m2 = Map[Mod[n, #1-1 == 0 &, Map[#[[1 &, m; ok = Apply[And, m2 m = Flatten[Position[Table[f[i && g[i, {i, 2, 5000}, True + 1 Problem 22 Beräkna för 1 n 20 hur många tal i rad från och med (n+1)!+2 som inte är primtal. Lösning: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 3 3 5 5 9 21 15 9 15 27 65 17 41 21 29 35 87 27 29 f[n_ := Block[{}, t = (n + 1)! + 2; While[! PrimeQ[t, t++; {n, t - ((n + 1)! + 2)} Table[f[i, {i, 1, 20} Håkan Strömberg 12 KTH STH
Problem 23 Funktionen φ(a), EulerPhi i Mathematica, bestämmer för a Z + hur många tal x Z + < a sådana att gcd(a,x) = 1. Eftersom φ(4) = 2, φ(3) = 2 och φ(12) = 4, kan vi säga att φ(4) φ(3) = φ(3 4), men så är det inte alltid och därför frågar vi för hur många par (a,b), 1 a,b 20 som villkoret nedan är sant φ(a)φ(b) φ(ab) Lösning: För 145 par är villkoret sant m = Range[20; m2 = CartesianProduct[m, m; f1[s_:=eulerphi[s[[1*eulerphi[s[[2!=eulerphi[s[[1*s[[2 f2[s_:=f1[s && GCD[s[[1,s[[2==1 Length[Select[m2, f1 Problem 24 Låt u n beteckna antalet ord av längden n med alfabetet {0,1} som har egenskapen att två 0:or inte följer på varandra. Bestäm detta antal för n = 1,...,10. Lösning: Här är antalet möjligheter för ord med längden 1 till 10 Jämför med Fibonacci tal 2,3,5,8,13,21,34,55,89,144 f[s_, n_ := Block[{}, If[StringLength[s == 0, m = {}; If[StringLength[s < n, f[s <> "0", n; f[s <> "1", n, AppendTo[m, s ; m g[s_ := Length[StringPosition[s, "11" == 0 Table[Length[Select[f["", i, g, {i, 1, 10} Håkan Strömberg 13 KTH STH
Problem 25 Vi betraktar ekvationen x 2 +ax+b = 0, där koefficienterna är heltal 4 a,b 4. Bestäm R för relationen R = {(a,b) x 2 +ax+b = 0 har heltalsrötter}. Lösning: a = Range[-4, 4; b = CartesianProduct[a, a; c = Map[Solve[x^2 + #[[1 x + #[[2 == 0 &, b; d = Table[{c[[i, 1, 1, 2, c[[i, 2, 1, 2, b[[i, 1, b[[i, 2}, {i, 1, Length[c}; e = Sort[Select[d, IntegerQ[#[[1 &; r = Sort[Table[{e[[i, 3, e[[i, 4}, {i, 1, Length[e} Problem 26 Fibonacci s talföljd definieras F 1 = 1, F 2 = 1, F n+2 = F n + F n+1. Vilka av de 100 första Fibonaccitalen är primtal? Lösning: Primtalen är 2, 3, 5, 13, 89, 233, 1597, 28657, 514229, 433494437, 2971215073, 99194853094755497 m = Table[Fibonacci[i, {i, 100}; m2 = Select[m, PrimeQ[# & Problem 27 Fibonacci s talföjd definierasf 1 = 1, F 2 = 1, F n+2 = F n +F n+1 och Lucas talföljd definieras L 1 = 1, L 2 = 3, L n+2 = L n +L n+1. Vilka tal är gemensammma för de två följderna om man i jämförelsen tar med tal upp till och med F 200 och L 200. Lösning: Endast talen 1 och 3 är gemensamma lucas[1=1; lucas[2=3; lucas[n_:=lucas[n=lucas[n-1+lucas[n-2 m1=table[lucas[i, {i,1,200}; m2=table[fibonacci[i, {i,1,200}; Intersection[m1, m2 Håkan Strömberg 14 KTH STH
Problem 28 För ett primtal p > 2 måste p mod 4 = 1 eller p mod 4 = 3 gälla. Som till exempel 7 mod 4 = 3 och 17 mod 4 = 1. Vilken är den längsta följd av primtal, bland de 5000 första, sådan att samtliga primtal i följden är av typen p mod 4 = 1. Ge en lista av denna följd som svar. Lösning: Vi finner dessa 9 primtal 11593, 11597, 11617, 11621, 11633, 11657, 11677, 11681, 11689 f[s_:=block[{start,p=1,mn=0,ok=true,n=0}, While[ok, While[ok&&!s[[p,p++;If[p>Length[s, ok=false ; n=0; While[ok&&s[[p, p++;n++; If[p>Length[s, ok=false ; If[n>mn,start=p-n; mn=n ; {start,mn} m1=table[prime[i,{i,2,5000}; m2=map[mod[#,4==1&,m1; m3=map[mod[#,4==3&,m1; m4=f[m2; m5=f[m3; Table[m1[[i,{i,m4[[1,m4[[1+m4[[2-1} Problem 29 Ett gott primtal p n (med ordningsnumret n > 1) är ett primtal sådant att p 2 n > p n 1 p n+1. Hur många goda primtal < 500 finns det? Lösning: Det 95:e primtalet är 499. Av de 499 är 49 goda primtal. m = Table[Prime[i^2 > Prime[i - 1*Prime[i + 1, {i, 2, 95}; Length[Map[Prime[# + 1 &, Flatten[Position[m, True Håkan Strömberg 15 KTH STH
Problem 30 Två tal, a i och a j kallas vänskapliga om σ(m) = σ(n) = m+n, där σ(n) är summan av alla x Z +,x n. 1000-tals sådana par (m,n) är kända, bland annat förstås det minsta, som redan omnämns i bibeln. Vilket är det? Lösning: Det minsta paret vänskapliga tal är 220 och 284 m={}; For[k=1,k<300,k++, For[l=k+1,l<300,l++, t1=apply[plus,divisors[k; t2=apply[plus,divisors[l; If[t1==t2 && t1==k+l, AppendTo[m,{k,l} m Problem 31 Ange alla möjligheter att uppnå summan 1000 med hjälp av ett antal konsekutiva (på varandra följande) heltal. Lösning: Följande tre lösningar finns 52 k=28 k = 1000 70 k=55 k = 1000 202 k=198 k = 1000 f[s_ := Block[{n = {}, m, k}, For[m = 1, m <= s, m++, k = 1; While[(2 m + k)/2 (k + 1) <= s, If[(2 m + k)/2 (k + 1) == s, AppendTo[n, {m, k} ; k++; ; n f[1000 Håkan Strömberg 16 KTH STH
Problem 32 Bestäm summan av de n första termerna av följande summor: 1 1 2 + 1 2 3 + 1 3 4 +... 1 1 2 3 + 1 2 3 4 + 1 3 4 5 +... 1 1 2 3 4 + 1 2 3 4 5 + 1 3 4 5 6 +... Lösning: Summorna är i tur och ordning 1 1 n 1 4 1 2(n 1) + 1 2n 1 18 1 6(n 2) + 1 3(n 1) 1 6n Sum[1/(k (k - 1)), {k, 2, n} // Apart Sum[1/(k (k - 1) (k - 2)), {k, 3, n} // Apart Sum[1/(k (k - 1) (k - 2) (k - 3)), {k, 4, n} // Apart Problem 33 Lös ekvationen n!(n 1)! = m! Lösning: Det finns tre lösningar n = 1,m = 1, n = 2,m = 2 och n = 7,m = 6 m = {}; m1 = Table[i!, {i, 1, 15}; m2 = Table[i!*(i - 1)!, {i, 1, 15}; For[k = 1, k <= 15, k++, For[l = 1, l <= 15, l++, If[m1[[k == m2[[l, AppendTo[m, {k, l, l - 1} m Håkan Strömberg 17 KTH STH
Problem 34 Nedanstående uppställning visar multiplikationen av ett tresiffrigt och ett tvåsiffrigt. Det märkliga här är att samtliga i uträkningen ingående siffror, inklusive de i talen själva, alla är primtalssiffror, {2,3,5,7}. Vilka är de två talen? p p p p p p p p p p p p p p p p p p Lösning: Det finns bara en lösning 775 33 = 25575 m={2,3,5,7}; m1=cartesianproduct[m,m; tal2=map[fromdigits,m1; m2=cartesianproduct[m1,m; tal3=map[fromdigits,partition[flatten[m2,3; m3=cartesianproduct[m2,m; tal4=map[fromdigits,partition[flatten[m3,4; m4=cartesianproduct[m3,m; tal5=map[fromdigits,partition[flatten[m4,5; u={}; For[k=1,k<=Length[tal2,k++, For[l=1,l<=Length[tal3,l++, If[MemberQ[tal5,tal2[[k*tal3[[l, AppendTo[u,{tal2[[k,tal3[[l,tal2[[k*tal3[[l} u f[s_:=block[{k,m,m2={}}, m=integerdigits[s[[1; MemberQ[tal4,m[[1*s[[2&& MemberQ[tal4,m[[2*s[[2 Map[f,u Håkan Strömberg 18 KTH STH
Problem 35 Relationen R 1 = {(x,x 2 ) 1 x 20} och relationen R 1 = {(x,x 3 ) 1 x 20} är givna. Bestäm relationen R 1 R 2. Lösning: Relationen utskriven (1, 1),(2, 64),(3, 729),(4, 4096) m1 = Table[{i, i^2}, {i, 1, 20}; m2 = Table[{i, i^3}, {i, 1, 20}; m3 = {}; For[k = 1, k <= 20, k++, For[l = 1, l <= 20, l++, If[m1[[k, 2 == m2[[l, 1, AppendTo[m3, {m1[[k, 1, m2[[l, 2} m3 Problem 36 Bestäm för n = 1,2...10. Lösning: a) b) n k=0 10 k=n ( ) 10 k n k ( )( ) k 10 n k f1[n_ := Sum[Binomial[10 - k, n - k, {k, 0, n} Table[f1[i, {i, 1, 10} Med summorna från n = 1...10 11,55,165,330,462,462,330,165,55,11 f2[n_ := Sum[Binomial[k, n Binomial[10, k, {k, n, 10} Table[f2[i, {i, 1, 10} Med summorna från $n=1\ldots10$ $$ 5120, 11520, 15360, 13440, 8064, 3360, 960, 180, 20, 1 $$ Håkan Strömberg 19 KTH STH
Problem 37 Låt k beteckna ett positivt heltal. Beräkna antalet N(k) tripplar (x, y, z) av heltal som uppfyller villkoren x k y k z k x y k y z k z x k Lösningen består av en funktion N, som tar emot ett tal k, och som returnerar det beräknade antalet N(k). Lösning: f[k_ := Block[{x, y, z, s = 0}, For[x = -k, x <= k, x++, For[y = -k, y <= k, y++, For[z = -k, z <= k, z++, If[Abs[x-y<=k && Abs[y-z<=k && Abs[z-x<=k, s++ ; s Table[f[i, {i, 1, 10} ger svaret för k = 1...10. 15,65,175,369,671,1105,1695,2465,3439,4641 Problem 38 a, b och c är boolska variabler. För vilka uppsättningar av värden (a,b,c) är uttrycket nedan sant? ((a b) (a c)) (b c) Lösning: f :=! (Implies[a, b && Implies[a, c) && Implies[b, c BooleanTable[{a, b, c} -> f, {a, b, c} Uttrycket är sant då a = T,b = F,c = F och då a = T,b = F,c = T Håkan Strömberg 20 KTH STH
Problem 39 Betrakta först 1 2 = 1 2 3 6 1 2 +3 2 = 3 4 5 6 1 2 +3 2 +5 2 = 5 6 7 6 Och försök sedan uttrycka högerledet som funktion av n i uttrycket 1 2 +3 2 +5 2 +7 2 +...+n 2 =? Lösning: f[n_ := Block[{}, Sum[i^2, {i, 1, n, 2} m = Table[2 i - 1, {i, 1, 10}; Map[f, m Table[i (i + 1) (i + 2)/6, {i, 1, 19, 2} Formeln blir n(n+1)(n+2) 6 Håkan Strömberg 21 KTH STH
Problem 40 I ett spel med okänt namn, kan man få poäng på två olika sätt. Antingen, genom att nå målet genom ett skott från långt håll, som ger a poäng eller genom ett skott från närmare håll, som ger b poäng. Skriv en funktion f(a,b), som tar emot dessa poängtal och som returnerar Den största totalpoäng som inte kan förekomma som ett slutresultat. Antas vara mindre än 300. Antalet olika slutresultat ett lag inte kan få. Lösning: s = {}; f[a_, b_ := Block[{i, j, m = {}}, For[i = 0, i <= IntegerPart[300/a, i++, For[j = 0, j <= IntegerPart[300/b, j++, AppendTo[s, a*i + b*j; ; ; s = Union[s; i = 300; For[i = 1, i <= 300, i++, If[! MemberQ[s, i, AppendTo[m, i; ; {Length[m, m} f[5, 8 För till exempel poängen 5 och 8 finns det 14 ouppnåliga poäng nämligen 1,2,3,4,6,7,9,11,12,14,17,19,22,27 Håkan Strömberg 22 KTH STH
Problem 41 Bestäm summan n ( ) n k k k=0 för olika värden på n. Använd sedan dessa resultat för att finna en generell formel uttryckt i n som direkt kan användas för att finna summor för olika n > 0. Lösning: Table[Sum[Binomial[n, k, {k, 1, n}, {n, 1, 10} Satsen ovan ger utskriften Vilket leder fram till formeln 2 n 1 1,3,7,15,31,63,127,255,511,1023 Problem 42 2 2 +3 2 +4 2 +14 2 = 15 2 4 2 +5 2 +6 2 +38 2 = 39 2 6 2 +7 2 +8 2 +74 2 = 74 2 8 2 +9 2 +10 2 +122 2 = 123 2 (2n) 2 +(2n+1) 2 +(2n+2) 2 +m 2 = (m+1) 2 Bestäm m som funktion av n, så att detta uttryck kan användas för att, med olika värden på n, bestämma termerna i de fyra inledande uttrycken. Lösning: Solve[(2n)^2 + (2n+1)^2 + (2n+2)^2 + m^2==(m+1)^2, m Ger funktionen f(n) = 2(1+3n+3n 2 ) Problem 43 Låt n vara ett femsiffrigt positivt heltal och m det fyrsiffriga heltal som erhålls då den mittersta siffran i n tas bort. Bestäm antalet positiva femsiffriga tal n sådana att m n. Lösning: Det finns 90 stycken, all ganska ointressanta efter som de slutar med 00, som till exempel 67000. m=table[{i,fromdigits[drop[integerdigits[i,{3}},{i,10000,99999}; Length[Select[m, Mod[#[[1, #[[2 == 0 & Håkan Strömberg 23 KTH STH
Problem 44 Vilken siffra är vanligast i utvecklingen av 2 2000 Lösning: Siffran 8 är vanligast. Antalet siffror från 0 till 9: t = 2^2000; a = IntegerDigits[t; Table[Count[a, i, {i, 0, 9} 62,57,65,59,60,59,65,49,71,56 Problem 45 p, q och r är boolska variabler. För vilka uppsättningar av dessa är följande uttryck falskt ((p q) (p r)) (p q) Lösning: f := Implies[Implies[p, q && Implies[q, r, Implies[p,! r BooleanTable[{p, q, r} -> f, {p, q, r} Uttrycket är falskt då p,q,r alla är True Problem 46 För en familj gäller följande: Åldern i år för Farden, Mordern, Sonen och Dottern är alla heltalskvadrater. Faderns ålder är lika med summan av Morderns, Sonens och Dotterns ålder. Farfars ålder är summan av Faderns, Moderns och Dotterns ålder. Farfars ålder är ett primtal Bestäm de fem personernas ålder. Lösning: Farfar är 89 år, fadern 49, modern 36, sonen 9 och dottern 4. For[k = 1, k <= 10, k++, For[s = 1, s < k, s++, For[d = 1, d < k, d++, ma = k^2 + s^2 + d^2; f = ma + k^2 + d^2; If[PrimeQ[f && IntegerQ[Sqrt[ma, Print[f, " ", ma, " ", k^2, " ", s^2, " ", d^2, " " Håkan Strömberg 24 KTH STH
Problem 47 Siffersumman hos talet 2739726 är 36. Så även för 2739726n där n är ett heltal 1 n x. Bestäm den övre gränsen x i detta intervall. Lösning: Siffersumman är 36 så länge n = 1...73 tal=2739726; i=1; While[Apply[Plus,IntegerDigits[tal*i==36,i++ i Problem 48 Tre tresiffriga tal, abc, bca och cab, har bildas med de tre siffrorna a, b och c. Sök de tre talen då man vet att produkten (abc)(bca)(cab) = 328245326 Lösning: De tre talen är 983,839 och 398 For[a=1,a<=9,a++, For[b=1,b<a,b++, For[c=1,c<b,c++, t1=100*a+10*b+c; t2=100*b+10*c+a; t3=100*c+10*a+b; If[t1*t2*t3==328245326,Print[t1," ",t2," ",t3 Håkan Strömberg 25 KTH STH
Problem 49 150 diskmaskiner ska transporteras från fabriken till ett stormaknad utanför stan. Till buds står två olika lastbilar Den stora som kan lasta 18 maskiner åt gången och som kostar 3500 kr/tur Den mindre som kan ta 13 diskmaskiner, men som endast kostar 2500 kr/tur Hur många turer ska man köra med varje bil, för att få transporten så billig som möjligt och vad kostar transporten total? Lösning: 4 lass med den stora och 6 lass med den lilla ger minimum 29000 kr för transporten. a={}; For[s=0,s*18<150,s++, l=(150-s*18)/13; If[!IntegerQ[l,l=IntegerPart[l+1; a=join[a,{{s,l}}; a=join[a,{{9,0}}; Sort[Table[{a[[i,1*3500+a[[i,2*2500,a[[i,1,a[[i,2},{i,1,10}[[1 Problem 50 Beräkna dessa fem serier 1 2+3+4 3+4+5+6+7 4+5+6+7+8+9+10 5+6+7+8+9+10+11+12+13 och försök sedan beräkna serien där första (minsta) termen är n och uttryck summan i n. Lösning: För starttalet 1 till 10 får vi resultatet 1,9,25,49,81,121,169,225,289,361 Har vi tur, ser vi att då första siffran är n är summan (2n 1) 2. summa[n_:=block[{i}, Sum[i, {i, n, 2n-2+n} Table[summa[i, {i, 1, 20} Håkan Strömberg 26 KTH STH
Problem 51 Med hjälp av FromDigits[a,2 översätter man i Mathematica listan {1,0,0,1,1,0} till det binära talet 100110 2. Med hjälp av Form[b,2 skriver man ut talet b på binär form. Undersök med hjälp av dessa funktioner utseendet hos t 2 där t är ett binärt tal med enbart 1:or. Uttryck svaret som en text där du använder n, antalet 1:or hos t Lösning: Talet inleds med n 1 1:or följt av n 0:or och avslutas med en 1:a f[n_:=block[{}, a=table[1,{i,1,n}; b=fromdigits[a,2^2; BaseForm[b,2 For[k=1,k<=5,k++, Print[k," ",f[k Håkan Strömberg 27 KTH STH
Problem 52 Låt n vara ett positivt heltal och låt a 1 beteckna antalet lösningar (x,y) där x och y är icke negativa heltal till ekvationen x+2y = n a 2 beteckna antalet lösningar (x,y) där x och y är icke negativa heltal till ekvationen 2x+3y = n 1 a 3 beteckna antalet lösningar (x,y) där x och y är icke negativa heltal till ekvationen 3x+4y = n 2... a n beteckna antalet lösningar (x,y) där x och y är icke negativa heltal till ekvationen nx+(n+1)y = 1 Bestäm summan a 1 +a 2 +...+a n för olika värden på n, tills du känner dig säker på att kunna uttrycka summan ovan med hjälp av n. Lösning: Det finns totalt n rötter antal[xk_, yk_, n_ := Block[{i, x, y}, i = 0; For[x = 0, x <= n, x++, y = (n - x*xk)/yk; If[IntegerQ[y && y >= 0, i++ ; i m = 15; lista = {}; For[k = 1, k <= m, k++, AppendTo[lista, antal[k, k + 1, m + 1 - k lista Håkan Strömberg 28 KTH STH
Problem 53 I landet Lillrike finns det sex städer. Mellan varje par av städer tänker man starta en busslinje. Tre bussbolag är aktuella. Regeringen tänker lösa landets persontrafikproblem genom att fördela de olika busslinjerna mellan de bussbolagen på följande sätt: Varje busslinje får endast trafikeras av ett bussbolag. Alla busslinjer måste trafikeras av något bussbolag. Inget bussbolag får trafikera fler än sju busslinjer Inget bussbolag får trafikera färre än två busslinjer Eftersom statsministerns kusin äger ett av bussbolagen, så får inget av de andra bussbolagen trafikera lika många eller fler busslinjer än kusinens bussbolag. På hur många sätt kan de olika busslinjerna fördelas mellan bussbolagen? Lösning: Det finns 6 5 2 = 15 linjer som ska trafikeras. Följande fördelningar av antalet busslinjer är möjliga (2,6,7),(3,5,7),(4,4,7),(4,5,6) p = IntegerPartitions[15, {3}; m = {}; For[i = 1, i <= Length[p, i++, p1 = Apply[Sort, {p[[i}; If[p1[[1>=2 && p1[[3<=7 && p1[[3>p1[[2, AppendTo[m, p1 ; m Håkan Strömberg 29 KTH STH
Problem 54 Ett tal kallar vi för en primsumma om det kan skrivas som en summa av två primtal. Till exempel är talet 38 en primsumma eftersom 38 = 7 + 31 där både 7 och 31 är primtal. Hur många tal n, 2 n 1000 är primsummor och hur många tal i detta intervall kan inte skrivas som summan av två primtal? Lösning: Det 168:e primtalet är 997. 333 tal kan inte skrivas som en summa av två primtal, vilket resterande 666 kan. Prime[168 f := Block[{i, j, tab, p, m = {}, s}, tab = Table[0, {i, 1, 1000}; p = Table[Prime[i, {i, 1, 168}; For[i = 1, i <= Length[p, i++, For[j = i, j <= Length[p, j++, s = p[[i + p[[j; If[s <= 1000, tab[[s++; ; For[i = 2, i <= 1000, i++, If[tab[[i == 0, AppendTo[m, i ; {Length[m, 999 - Length[m} f Håkan Strömberg 30 KTH STH
Problem 55 Vilka är de åtta heltalen N 3, sådana att om 1 < k N och gcd(k,n) = 1, så betyder det alltid att k är ett primtal. Lösning: f[n_ := Block[{ok = True}, For[k = 2, k <= n, k++, If[GCD[k, n == 1 &&! PrimeQ[k, ok = False ; ok Select[Range[3, 100, f 3,4,6,8,12,18,24,30 Problem 56 Låt n vara ett positivt heltal. Bestäm för n = 1,2...10, determinanten till den matris M(n n) vars element a ij = gcd(i,j). Lösning: f[n_ := Block[{i, j, m = {}}, For[i = 1, i <= n, i++, For[j = 1, j <= n, j++, AppendTo[m, GCD[i, j ; m = Partition[m, n; Det[m Table[f[i, {i, 1, 10} 1,1,2,4,16,32,192,768,4608,18432 Håkan Strömberg 31 KTH STH
Problem 57 Låt p, q < 100 vara två olika, udda primtal med p < q. Betrakta talet R = pq. Det visar sig att man alltid kan finna positiva heltal x, y, u, v, där x > u, så att Bestäm p för de fall då gcd(xy,uv) = 2 Lösning: R = x 2 y 2 = u 2 v 2 Problem 58 Beskriv utseendet, på binär form, hos kvadraten av ett binärt tal bestående av n stycken 1:or. Lösning: f[n_ := BaseForm[(2^n - 1)^2, 2 Table[f[n, {n, 1, 10} Kvadraten av talet bestående av n stycken 1:or innehåller 2n binära siffror, först n 1 stycken 1:or, följt av n stycken 0:or och med en 1:a på slutet. Till exempel 1111 2 2 = 11100001 2 Problem 59 Bestäm summan till för alla positiva heltal n. Lösning: Summan blir 2 n k=0 ( n k) ( 2n 1 ) k Sum[Binomial[n, k/binomial[2 n - 1, k, {k, 0, n} Håkan Strömberg 32 KTH STH
Problem 60 Vilken siffersumma är vanligast bland femsiffriga heltalskvadrater? Lösning: Siffran 6 är vanligast med 142 förekomster f := Block[{t, m = {}, s = {}}, For[t = 100, t <= 316, t++, AppendTo[m, IntegerDigits[t^2 ; m = Flatten[m; For[i = 0, i <= 9, i++, AppendTo[s, {i, Count[m, i} ; s f Problem 61 För vilket värde på a, 1 a 50 ger polynomet p(n) = n 2 +n+a flest primtal för heltalen 1 n 50 och hur många? Lösning: Vi får maximum för a = 41 med hela 46 primtal av de 50 testade talen. Överraskande många, eller hur? f[a_ := Block[{s = 0, n}, For[n = 1, n <= 50, n++, If[PrimeQ[n^2 + n + a, s++; ; s Table[{a, f[a}, {a, 1, 50} Håkan Strömberg 33 KTH STH
Problem 62 Skriv en funktion, som för ett givet n bestämmer summan av elementen i huvuddiagonalen för följande matris M(n n) 1 2 3... n n+1 n+2 n+3... 2n 2n+1 2n+2 2n+3..................... (n 1)n+1 (n 1)n+2......... Lösning: Vi ser ganska snart att elementen utefter huvuddiagonalen är heltalskvadrater och att talet M(n,n) = n 2. n i 2 = n(n+1)(2n+1) 6 Sum[i^2, {i, 1, n} i=1 Problem 63 För vilka rader r i Pascals triangel kan summan av talen skrivas som en tvåpotens (2 n )? Lösning: Svaret är alla f[r_ := Sum[Binomial[r, i, {i, 0, r} Table[f[r, {r, 1, 20} Problem 64 För vilka rader 1 r 20 i Pascals triangel kan summan av de udda talen skrivas som en tvåpotens (2 n )? Lösning: Vi får följande radnummer 1,2,3,4,6,7,8,14,15,16,30,31,32,62,63,64,126,127,128 och tror oss se mönstret 2 n 2,2 n 1,2 n för n > 1. f[n_ := Block[{s = 0, i}, For[i = 0, i <= n, i++, b = Binomial[n, i; If[OddQ[b, s = s + b; ; IntegerQ[Log[2, s Select[Range[200, f Håkan Strömberg 34 KTH STH
Problem 65 Det positiva heltalet n har följande egenskaper det finns inget heltal x så att x 2 n för alla primtal p sådana att p n så p 1 n Bestäm alla heltal n 5000 för vilka dessa villkor gäller. Lösning: Det finns bara ett tal, 6 som uppfyller villkoren. Det är lätt att inte att det inte kan finnas fler eftersom talet ska ha primfaktorer p 1 och p 2 sådana att p 2 p 1 = 1. f[n_ := Block[{m, i, ok = False}, If[SquareFreeQ[n &&! PrimeQ[n, ok = True; m = FactorInteger[n; For[i = 1, i < Length[m, i++, If[m[[i, 1 + 1!= m[[i + 1, 1, ok = False; ; ; ; ok Select[Range[2,50000, f Problem 66 u n definieras genom u 1 = 2, u n+1 = u 2 n u n +1, n 1 Bestäm u n med det minsta värdet på n för vilket u n inte är ett primtal. Lösning: Talföljden är där 1807 inte är ett primtal. u[n_ := n^2 - n + 1 n = 2; While[PrimeQ[n, Print[n; n = u[n n 2,3,7,43,1807 Håkan Strömberg 35 KTH STH
Problem 67 Beräkna för 1 n 20 hur många tal i rad från och med (n+1)!+2 som inte är primtal. Lösning: Lösningen i tabellform n 1 2 3 4 5 6 7 8 9 10 Antal 1 3 3 5 5 21 15 9 15 17 n 11 12 13 14 15 16 17 18 19 20 Antal 27 65 17 41 21 29 35 87 27 29 Till exempel för n = 4 är inget av talen från (n+1)!+2 = 122 och fram till 126 primtal. Däremot är 127 primtal. f[n_ := Block[{s = 0}, t = (n + 1)! + 2; While[! PrimeQ[t, s++; t++; ; s Table[{n, f[n}, {n, 1, 20} Håkan Strömberg 36 KTH STH
Problem 68 Låt u n beteckna antalet ord av längden n med alfabetet {0,1} som har egenskapen att två 0:or inte följer på varandra. Bestäm detta antal för n = 1,...,10. Lösning: Vi får svaret 1 #include <stdio.h> 2 int t; 3 int solve(int n,int v,int s){ 4 if(v==n) 5 t++; 6 else 7 if(s==1){ 8 solve(n,v+1,1); 9 solve(n,v+1,0); 10 } 11 else{ 12 solve(n,v+1,1); 13 } 14 } 15 16 int main(void){ 17 int i; 18 for(i=1;i<=10;i++){ 19 t=0; 20 solve(i,0,0); 21 printf("%d ",t); 22 } 23 } 1,2,3,5,8,13,21,34,55,89 Håkan Strömberg 37 KTH STH
Problem 69 Uppgiften går ut på att ta reda på för vilka n = 1,...,300 som primfaktorerna till n 2 + 1 samtliga < 17. Kommer detta antal att förändras om den övre gränsen för n ändras till 600? Lösning: Vi har hittat 9 tal n, där största faktorn hos n 2 +1 är < 17. Talen är 1,2,3,5,7,8,18,57,239 och då har vi sökt enda upp till 20000. Finns det inte fler? Vi vet inte! f[n_ := Block[{m}, m = FactorInteger[n^2 + 1; m[[length[m, 1 < 17 n = 0; For[i = 1, i <= 20000, i++, If[f[i, n++ n Problem 70 Fibonacci s talföjd definierasf 1 = 1, F 2 = 1, F n+2 = F n +F n+1 och Lucas talföljd definieras L 1 = 1, L 2 = 3, L n+2 = L n +L n+1. Vilka tal är gemensammma för de två följderna om man i jämförelsen tar med tal upp till och med F 200 och L 200. Lösning: Vi har bara hittat talen 1 och 3. Troligtvis finns det inte fler. f[1 := 1 f[2 := 1 f[n_ := f[n - 1 + f[n - 2 l[1 := 1 l[2 := 3 l[n_ := l[n - 1 + l[n - 2 flist = Table[f[i, {i, 1, 30}; glist = Table[l[i, {i, 1, 30}; allt = Sort[Join[flist, glist; losning = {}; For[i = 1, i < Length[allt, i++, If[allt[[i == allt[[i + 1, AppendTo[losning, allt[[i losning Håkan Strömberg 38 KTH STH
Problem 71 Uttrycket nedan med de boolska variablerna A,B och C kan skrivas på ett enklare sätt hur? (A B) (B C) ( C A) (C A) Lösning: BooleanMinimize[(a &&!b) Implies[b,c (! c &&!a) Equivalent[c,a ger a b c Problem 72 p, q och r för boolska variabler. För vilka uppsättningar av dessa är följande uttryck inte sant: ((p q) (q r)) (p r) Lösning: f := Implies[Implies[p, q && Implies[q, r, Implies[p,! r BooleanTable[{p, q, r} -> f, {p, q, r} Uttrycket är inte sant då p,q,r alla är True Problem 73 a,b och c är boolska variabler. För vilka uppsättningar av dessa är följande uttryck sant: ((a b) ( a c)) (b c) Lösning: f := Equivalent[Implies[a, b, Implies[! a, c && (b! c) BooleanTable[{a, b, c} -> f, {a, b, c} Uttrycket är sant då a b c T T T T T F F T T Uttrycket kan minimeras till (a b) (b c) Håkan Strömberg 39 KTH STH
Problem 74 Bestäm för n = 1,2...10. a) b) n k=0 10 k=n ( ) 10 k n k ( )( ) k 10 n k Table[Sum[Binomial[10 - k, n - k, {k, 0, n}, {n, 1, 10} ger 11,55,165,330,462,462,330,165,55,11 Table[Sum[Binomial[k,n Binomial[10,k, {k,n,10}, {n,1,10} ger 5120,11520,15360,13440,8064,3360,960,180,20,1 Problem 75 Bestäm för n = 1,2...10. Lösning: b) a) n/2 k=0 ( ) n 2k n ( ) 10 ( 1) k k k=0 Table[Sum[Binomial[n, 2 k, {k, 1, Floor[n/2}, {n, 1, 10} ger 0,1,3,7,15,31,63,127,255,511 Table[Sum[(-1)^k Binomial[10, k, {k, 1, n}, {n, 1, 10} ger 10,35, 85,125, 127,83, 37,8, 2, 1 Håkan Strömberg 40 KTH STH
Problem 76 Utgår Relationen R 1 = {(x,x 2 ) 1 x 20} och relationen R 1 = {(x,x 3 ) 1 x 20} är givna. Bestäm relationen R 1 R 2. Lösning: Problem 77 Universum är i denna uppgift U = {1,2,3...100}. Mängden A består av de nio första primtalen, mängden av talen B = {1,3,6,10,...,78,91} och mängden C av de tal n 100 sådana att inte x 2 n för något x > 1. Bestäm Lösning: (A B) (A C) (B C) a = Table[Prime[i, {i, 1, 8}; b = Table[i (i + 1)/2, {i, 1, 13}; c = Select[Range[100, SquareFreeQ[# &; Union[Intersection[a, b, Intersection[a, c, Intersection[b, c Följande tal ingår i mängden 1,2,3,5,6,7,10,11,13,15,17,19,21,55,66,78,91 Problem 78 Med universum U = {1,2,3,...,100} och mängden A = {1,4,7,10,13,...,100}, mängden B = {1,3,5,7,9,...,99} och mängden C, som består av alla primtal< 100 ska du bestämma (A B) ( A C ) Lösning: u = Range[100; a = Table[1 + 3*i, {i, 0, 33}; b = Table[1 + 2*i, {i, 0, 49}; c = Select[Range[100, PrimeQ[# &; Length[Intersection[Union[a, b, Union[Complement[u, a, c Den slutliga mängden innehåller 44 tal, som är svar på uppgiften. Talen är 3,5,7,9,11,13,15,17,19,21,23,27,29,31,33,35,37,39,41,43,45,47, 51,53,57,59,61,63,65,67,69,71,73,75,77,79,81,83,87,89,93,95,97,99 Håkan Strömberg 41 KTH STH
Problem 79 Vilka primtal kan erhållas som summan av elementen ur delmängder till mängden M = {2, 5, 9, 12, 17, 21, 34}? Summan kan bestå av ett eller flera tal, men talen får bara användas en gång. Lösning: f := Block[{m = {2, 5, 9, 12, 17, 21, 34}, ut = {}}, s = Subsets[m; For[i = 1, i <= Length[s, i++, p = Total[s[[i; If[PrimeQ[p, AppendTo[ut, p ; Union[ut f Följande primtal kan erhållas 2,5,7,11,17,19,23,29,31,37,41,43,47,53,59,61,67,71,79,83,89 Problem 80 Pell s talföljd definieras P 0 = 0, P 1 = 1, P n = 2P n 1 +P n 2. Hur många tal i denna talföljd upp till P 25 är heltalskvadrater. Lösning: En rekursiv variant, inte speciellt effektiv p[0 := 0 p[1 := 1 p[n_ := 2 p[n - 1 + p[n - 2 t = Table[p[i, {i, 1, 25}; Select[t, IntegerQ[Sqrt[# & Endast talen 1 och 169 är heltalskvdrater Håkan Strömberg 42 KTH STH
Problem 81 Ett antal på varandra följande heltal, där inget av talen är primtal kalla primtalsöken. Den största kända (?) primtalsöknen startar direkt efter primtalet 90874329411493. Hur stor (hur många tal) består denna primtalsöken av? Lösning: Öknen består av hela 803 tal. Inget av talen 90874329411494... 90874329412295 är primtal. t = 90874329411493; n = 0; While[! PrimeQ[t + 1, n++; t++; n t - 1 Problem 82 X k bildas enligt formeln nedan, där p i är det i:e primtalet. X k = 1+ Låt q k vara det minsta primtalet som är större än X k. Matematikern R. F. Fortune har påstått att q k X k +1 är primtal för alla k. Bestäm de 20 första Fortunate primes. Lösning: f[k_ := Apply[Times, Table[Prime[i, {i, 1, k} + 1 g[k_ := Block[{x}, y = f[k; x = y + 1; While[! PrimeQ[x, x++ ; x - y + 1 Table[g[k, {k, 1, 20} Talen är 3,5,7,13,23,17,19,23,37,61,67,61,71,47,107,59,61,109,89,103 k i=1 p i Håkan Strömberg 43 KTH STH
Problem 83 Låt k och l vara positiva heltalsvärden 50 sådana att och så att gcd(k,5) = gcd(l,5) = gcd(k,l) = 1 k 2 +3kl l 2 = F 2, där gcd(f,5) = 1 Bestäm rötterna för ekvationssystemet nedan för samtliga (k, l), som uppfyller villkoren ovan. { k = x 2 +y 2 l = x 2 +2xy+2y 2 Lösning: Det finns hela 17 par (k, l) som uppfyller villkoren. Det finns fyra rötter till varje ekvation. I tabellen nedan finns de två första som alltid är heltalsrötter, samt värdet på k och l. x 1 y 1 x 2 y 2 k l 1 0 1 0 1 1 0 1 0 1 1 2 1 1 1 1 2 1 3 2 3 2 13 29 2 3 2 3 13 34 4 1 4 1 17 26 1 4 1 4 17 41 5 1 5 1 26 17 5 1 5 1 26 37 1 5 1 5 26 41 5 2 5 2 29 13 2 5 2 5 29 34 5 3 5 3 34 13 3 5 3 5 34 29 6 1 6 1 37 26 5 4 5 4 41 17 4 5 4 5 41 26 n = 50; m = Partition[Flatten[Table[{i, j}, {i, 1, n}, {j, 1, n}, 2; f1[m_:=gcd[m[[1,m[[2==1 && GCD[m[[1,5==1 && GCD[m[[2,5==1 m2 = Select[m, f1; f2[m_ := Block[{k = m[[1, l = m[[2, f}, f = Sqrt[-k^2 + 3 k*l - l^2; IntegerQ[f && GCD[f, 5 == 1 m3 = Select[m2, f2; f3[m_ := Block[{}, a = Solve[{x^2 + y^2 == m[[1, x^2 + 2 x*y + 2 y^2 == m[[2}, {x, y}; {a[[1, a[[2, m[[1, m[[2} Map[f3, m3 Håkan Strömberg 44 KTH STH
Problem 84 Låt k och l vara positiva heltalsvärden 50 sådana att och så att gcd(k,5) = gcd(l,5) = gcd(k,l) = 1 k 2 +3kl l 2 = F 2, där gcd(f,5) = 1 Bestäm rötterna för ekvationssystemet nedan för samtliga (k, l), som uppfyller villkoren ovan. { k = x 2 +y 2 Lösning: Ingen bra uppgift l = x 2 +2xy+2y 2 Problem 85 Vilka är de 10 minsta positiva heltal, som inte kan skrivas som n 2 +p, med ett heltal n > 0 och ett primtal p? Lösning: Vi har från början ingen aning om hur många tal vi måste undersöka, innan vi hittat de 10 minsta, och gissar att 1000 kommer att räcka. t = Table[False, {i, 1, 1000}; For[n = 1, n <= 100, n++, For[p = 1, p <= 168, p++, v = n^2 + Prime[p; If[v <= 1000, t[[v = True m = {}; For[i = 1, i <= 1000, i++, If[t[[i == False, AppendTo[m, i m Vilket det gjorde med råge. De sökta talen är 1,2,5,10,13,25,31,34,37,58, Håkan Strömberg 45 KTH STH
Problem 86 Sekvensen x 0,x 1,... är definierad genom följande Bestäm ett närmevärde till x 250. x 0 = 0, x 1 = 1 x n+1 = x n +nx n 1, n 1 n+1 Lösning: Denna uppgift fungerar inte. Svaret ska bli ln 2 0.693147. Rutinen nedan ger dock 0.613705. Även om konvergensen är långsam kan det aldrig gå mot ln2. f[n_ := Block[{x0 = 0.0, x1 = 1.0, x2}, For[i = 2, i <= n, i++, x2 = (x1 + i x0)/(i + 1); x0 = x1; x1 = x2; ; x2 f[1000000 Jag har också försökt med RSolve[{x[n+1==(x[n+n x[n-1)/(n+1), x[0==0,x[1==1}, x[n, n {{x[n -> -(-1)^n LerchPhi[-1, 1, 1 + n + Log[2}} Utan större vetskap om LerchPhi visar det sig att gränsvärdet för denna funktion då n är 0 Limit[-(-1)^n LerchPhi[-1, 1, 1 + n, n -> Infinity Jag har även, utan framgång förstås, testat x[0 := 0 x[1 := 1 x[n_ := (x[n - 1 + n x[n - 2)/(n + 1) x[10 men den ger samma resultat som den inledande funktionen. Enda förklaringen är att konvergensen är långsam! Håkan Strömberg 46 KTH STH
Problem 87 Låt r vara ett udda positivt heltal. Vi tänker oss en iterativ process startande med ett positivt heltal n, enligt följande Om n är ett udda tal, ersätt n med n+r Om n är ett jämnt tal, ersätt n med n/2 Det gäller att, oberoende av startvärde n kommer processen att så småningom leda till att en periodisk talföljd nås. Skriv en funktion f, som tar emot data om r och n och som beräknar efter hur många varv n återkommer till ett tidigare erhållet värde. För n = 5 och r = 7 ger f(5, 7) 5. Lösning: f[n_, r_ := Block[{m = {}, n1, v = 0}, n1 = n; While[! MemberQ[m, n1, v++; AppendTo[m, n1; If[EvenQ[n1, n1 = n1/2, n1 = n1 + r ; ; m f[5, 7 Håkan Strömberg 47 KTH STH
Problem 88 x, y och z är heltal så att 1 x,y,z 30. Vilka tal under 150 kan inte uttryckas genom x 2 +y 2 5z 2? Lösning: Endast 79 och 106 kan inte erhållas som resultat. f := Block[{x, y, z, tab, m = {}}, tab = Table[False, {i, 1, 149}; For[x = 1, x <= 30, x++, For[y = 1, y <= 30, y++, For[z = 1, z <= 30, z++, t = x^2 + y^2-5 z^2; If[t >= 1 && t <= 149, tab[[t = True ; ; For[i = 1, i <= 149, i++, If[tab[[i == False, AppendTo[m, i; ; m f Problem 89 Tjejmeniens parlament består av två kamrar, en kvinnlig och en manlig, med egna sessionssalar. I vardera salen är stolarna ordnade i en kvadratisk formation. Med lika många rader som kolonner. det är 644 fler kvinnor än män. I den nya parlamentsbyggnaden, som är under uppförande kommer samtliga ledamöter, kvinnor och män blandade, att rymmas i en och samma sal. Intressant nog kan stolarna fortfarande placeras i kvadratisk formation. Hur många kvinnor respektive män sitter i landets parlament? Lösning: Antag att det finns m rader i männens kammare, k rader i kvinnornas och s rader i den gemensamma kammaren. Vi får då det diofantiska ekvationssystemet { k 2 +m 2 = s 2 k 2 = m 2 +644 Reduce[{k^2+m^2==s^2, k^2==m^2+644, k>0, m>0, s>0}, Integers Ger svaret 30 2 = 900 kvinnor och 16 2 = 256 män. Håkan Strömberg 48 KTH STH
Problem 90 Utgå från mängden X = {1,2...2n}, n = 1,2...7 och bestäm antalet mängder S X, där S = n och x,y S så gäller x y y x Lösning: För till exempel n = 3 får vi de tre mängderna För n = 7 finns det 12 mängder. {2,3,5},{3,4,5},{4,5,6} \begin{problem} f[n_ := Block[{m, s = {}, i, j, k, ok}, m = Subsets[Range[1, 2 n, {n}; For[i = 1, i <= Length[m, i++, ok = True; For[j = 1, j < Length[m[[i, j++, For[k = j + 1, k <= Length[m[[i, k++, If[Mod[m[[i, k, m[[i, j == 0, ok = False ; If[ok, AppendTo[s, m[[i ; s f[3 Håkan Strömberg 49 KTH STH
Problem 91 Låt x {1,2,3,4,5,6,7},y {8,9,10,11,12,13,14} och z {15,16,17,18,19,20,21}. Bestäm antalet lösningar till ekvationen x+y+z = 33 Lösning: Det finns 37 lösningar. f := Block[{x, y, z, i, j, k, n = 0}, x = Range[7; y = Range[8, 14; z = Range[15, 21; For[i = 1, i <= Length[x, i++, For[j = 1, j <= Length[y, j++, For[k = 1, k <= Length[z, k++, If[x[[i + y[[j + z[[k == 33, n++ ; n f Problem 92 Bestäm summan S(N) = 1 m < n N m + n > N gcd(m,n) = 1 1 mn för N = 2,3...10. Lösning: Summan blir alltid 1 2 f[t_ := Block[{s = 0}, For[m = 1, m < t, m++, For[n = m + 1, n <= t, n++, If[m + n > t && GCD[m, n == 1, s = s + 1/(m*n); ; s Table[f[i, {i, 2, 10} Håkan Strömberg 50 KTH STH
Problem 93 Kolla upp denna. Låt a, d och r vara positiva heltal. För k = 0, 1,... låter vi u k = u k (a,d,r) = Skriv en funktion som beräknar summan S för givna värden på a, d, r och n. 1 (a+kd)(a+(k+1)d)...(a+(k+r)d) S = Lösning: Då a = 1, d = 1 och r = 2 får vi S = u[k_, a_, d_, r_ := Block[{p}, p = 1; For[i = k, i <= k + r, i++, p = p*(a + i*d) ; 1/p Sum[u[k, 1, 1, 2, {k, 1, 3} 3 k=0 n k=0 u k u k = 9 40 Håkan Strömberg 51 KTH STH
Problem 94 u n definieras genom u 1 = 2, u n+1 = u 2 n u n +1, n 1 Bestäm u n med det minsta värdet på n för vilket u n inte är ett primtal. Lösning: u[1=2; u[n_:=u[n-1^2-u[n-1+1 Map[{#,PrimeQ[#}&,Table[u[i,{i,1,10} 2 True 3 True 7 True 43 True 1807 False 3263443 True 10650056950807 False En rekursiv funktion u definieras. Med Table plockas de första 10 talen i talföljden fram. Den slutgiltiga listan ger oss det eftersökta talet. Redan u 5 = 1807 är ett sammansatt tal. Problem 95 Skriv en funktion f(n), där n är ett naturligt tal, som bestämmer summan av siffrorna i talen 1, 2, 3,...,10 n 2, 10 n 1 Testa funktionen för 1 n 4 Lösning: Funktionen f(n) innehåller en For-loop som i tur och ordning bryter ner var och ett av talen k och summerar dess siffror. Denna summa läggs sedan till s, som till sist når upp till den efterfrågade summan. {45,900,13500,180000} f[n_:=block[{s=0}, For[k=1,k<=10^n-1,k++, s=s+apply[plus,integerdigits[k; s Table[f[i,{i,1,4} Håkan Strömberg 52 KTH STH
Problem 96 Hur kan man uttrycka de naturliga tal n, för vilka ( ) ( ) ( ) ( ) n n n n,,,..., 1 2 3 n 1 alla är jämna tal? Du behöver inte bevisa ditt påstående! Lösning: Funktionen f(n) tar emot n och beräknar de n 1 binomialkoefficienterna. Om de är jämna adderas True till listan m, annars False. And tillämpas på hela listan och resultatet returneras. När vi undersöker funktionen för n = 1...33 får vi positivt utfall för 1,2,4,8,16,32 och drar av detta slutsatsen att de eftersökta n-värdena, kan skrivas på formen 2 m. f[n_:=block[{k,m={}}, For[k=1,k<=n-1,k++,AppendTo[m,Mod[Binomial[n,k,2==0; Apply[And,m Table[{i,f[i},{i,1,33} Problem 97 Sekvensen u 1, u 2, u 3,..., definieras rekursivt på följande sätt u 1 = 1, u n+1 = u n +8n, (n = 1,2,3,...) Skriv en funktion u(n) som bestämmer det n:te talet i denna sekvens. Föreslå sedan en funktion f(n), som direkt (i ett steg) ger det eftersökta talet. Testa båda funktionerna med n = 12. Lösning: Med hjälp av den rekursiva funktionen u(n) och med Table får vi följande lista 1,9,25,49,81,121,169,225,289,361,441,529,625,729,841,961,1089,1225,1369,1521 Den innehåller endast heltalskvadrater och vi kan skriva f(n) = (2n 1) 2. u[1=1; u[n_:=u[n=u[n-1+8*(n-1) Table[u[i,{i,1,20} Håkan Strömberg 53 KTH STH
Problem 98 Bestäm summan av serien n 6:or {}}{ 6+66+666+...+ 666...6 med hjälp av en funktion f(n), där n anger antalet 6:or i sista termen Testa funktionen för n = 10. Lösning: Först en funktion g(n), som skapar en term med n sexor och sedan en funktion f(n), som summerar seriens första n termer. Så till sist ett anrop f(10) som ger resultatet 7407407400 g[n_:=block[{s,k}, s=0; For[k=1,k<=n,k++,s=s+6*10^(k-1); s f[n_:=block[{s,k}, s=0; For[k=1,k<=n,k++,s=s+g[k; s f[10 Problem 99 Ge ett förslag på heltalet a, sådant att n n+2 n+4 n n+a + + = + a 2a 2a 2 2a för alla positiva heltal n Lösning: Uttrycket x står för floor, det största heltalet mindre än eller lika med x. Funktionen f(n,a) definierar uttrycket. I en tabell varierar vi 1 n 10 och 1 a 10, som visar sig räcka för att från utskriften kunna utläsa a = 3. f[n_,a_:=floor[n/a+floor[(n+2)/(2a)+floor[(n+4)/(2*a)- Floor[n/2-Floor[(n+a)/(2*a) l1=table[{f[n,a,n,a},{n,1,10},{a,1,10}; l1=partition[flatten[l1,3; Select[l1,#[[1==0& Håkan Strömberg 54 KTH STH
Problem 100 A, B, C och D är boolska variabler. För vilka uppsättningar av dessa är följande uttryck sant: ((A B) (C D)) D) Lösning: Listan t innehåller 16 underlistor med samtliga kombinationer hos de fyra boolska variablerna. f(a, b, c, d) är vår funktion översatt till Mathematica. Vi tillämpar t på funktionen och väljer med Select ut de kombinationer som ger värdet True för funktionen f. Det fyra eftersökta uppstättningarna är FFFF, FFTF, TTFF och TTTF t=flatten[table[{a==1,b==1,c==1,d==1},{a,0,1},{b,0,1},{c,0,1},{d,0,1},3 f[a_,b_,c_,d_:=!implies[(a==b)&&(c!d),d m1=apply[f,t,1 m2=select[t,f[#[[1,#[[2,#[[3,#[[4& Problem 101 Den digitala summan, D(n), definieras rekursivt { n då 1 n 9 D(n) = D(a 0 +a 1 +a 2 +...+a m ) då n > 9 där a 0, a 1, a 2,...,a m är alla de siffror som ingår i talet n. Till exempel D(989) = D(26) = D(8) = 8. Skriv funktionen D(n), och använd den för att bestämma vilken digital summa, som är vanligast bland de fyrsiffriga primtalen Lösning: Funktionen d(n) är rekursiv och anropar sig själv, så länge argumentet är > 9. Genom experiment med Prime[i finner vi att ordningsnumret hos det minsta fyrsiffriga primtalet är 169. På samma sätt finner vi ordningsnumret 1229 för det största. Listan a, med de aktuella primtalen appliceras på funktionen d(n) där resultaten lagras i b. Listan c är en frekvenstabell som visar att 5 är den vanligaste digitala summan med 181 förekomster. c = {0,176,177,0,179,181,0,176,172,0} d[n_:=block[{a},a=apply[plus,integerdigits[n; If[a>=10,d[a,a a=table[prime[i,{i,169,1229}; b=map[d,a; c=table[count[b,i,{i,0,9} Håkan Strömberg 55 KTH STH
Problem 102 Skriv en funktion som tar tar reda på alla tal n, som är sådana att n är ett heltal i intervallet 10000 n 99999 De fem siffrorna i n betecknas a 0,a 1,a 2,a 3,a 4 m är det fyrsiffriga heltal, som uppstår då den mittersta siffran intas bort,a 0,a 1,a 3,a 4. n är godkänt då n mod m = 0 Använd funktionen och ange med hjälp av resultatet antalet tal, som uppfyller villkoren. Lösning: Funktionen f(n) tar emot ett femsiffrigt tal n, delar upp det till en lista, med fem element, från vilken det mittersta tas bort. Det fyrsiffriga talet m bildas och kvoten mellan talen returneras. Listan l1 innehåller alla femsiffriga tal och den med hjälp av f(n) beräknade kvoten. Med hjälp av Select väljs alla tal där kvoten är ett heltal ut. Det visar sig att dessa tal är av typen x 1000 där 10 x 99, 90 stycken. f[n_:=block[{m1,k,t=0}, m1=delete[integerdigits[n,3; For[k=1,k<=4,k++,t=10*t+m1[[k; n/t l1=table[{f[n,n},{n,10000,99999}; Select[l1,IntegerQ[#[[1& Håkan Strömberg 56 KTH STH
Problem 103 Med de fyra olika heltalen {a, b, c, d} kan man bilda sex summor a+b, a+c, a+d, b+ c, b + d, c + d. Dela upp de åtta talen {1,2,3,4,5,6,7,8} i två mängder så att man från den ena kan skapa sex summor, som är identiska med de sex summor, som kan bildas från den andra mängden. Lösning: Med hjälp av KSubsets bildas s1, med alla fyra element stora delmängder. Listan s2 innehåller dellistor med två mängder vardera. Den genererade mängden och dess komplement till M. I funktionen f bildas först, med CartesianProduct, alla par. Från dessa väljs de sex aktuella paren ut. Dessa par summeras och summorna samlas i m3, som returneras. Det avslutande jobbet består sedan i att jämföra summorna från de två mängderna. Det visar sig att endast en uppdelning {1,4,6,7}, {2,3,5,8} går igenom testen. <<DiscreteMath Combinatorica m={1,2,3,4,5,6,7,8}; s1=ksubsets[m,4; s2=map[{#,complement[m,#}&,s1; f[m_:=block[{m1}, m1=cartesianproduct[m,m; m2=select[m1,#[[1<#[[2&; m3=union[map[apply[plus,#&,m2 Select[s2,f[#[[1==f[#[[2& Problem 104 En grupp ungdomar slog sig ner på uteserveringen. De beställde var sin Coca-Cola. När de betalat notan som tillsammans gick på 187 kr kunde de konstatera att priset på en Coca-Cola höjts från de 15 kr som de betalade senast de var här. Hur stor var gruppen och vad kostade en burk Coca-Cola? Lösning: 11 17 = 187. Gruppen bestod av 11 ungdomar och Coca-Colan kostade 17 kr. Håkan Strömberg 57 KTH STH