{VERSION 2 3 "SUN SPARC UNIX" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 256 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 257 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 258 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 259 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 } {CSTYLE "" -1 260 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 261 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 262 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 } {CSTYLE "" -1 264 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 265 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 266 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 } {CSTYLE "" -1 268 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 269 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 270 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 271 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 } {CSTYLE "" -1 272 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 273 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 274 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 275 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 } {CSTYLE "" -1 276 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 277 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 278 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Text \+ Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 0 0 0 0 0 1 3 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Warning" 2 7 1 {CSTYLE "" -1 -1 "" 0 1 0 0 255 1 0 0 0 0 0 0 1 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE " " 0 256 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 257 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 258 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 262 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 264 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 269 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 272 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 256 "" 0 "" {TEXT -1 13 "1. Claim: if " }{TEXT 256 1 "p" }{TEXT -1 25 " is a prime number, then " }{TEXT 257 15 "a^p \+ = a (mod p)" }{TEXT -1 17 " for any integer " }{TEXT 258 1 "a" }{TEXT -1 1 "." }}{PARA 257 "" 0 "" {TEXT -1 55 "Use Maple to check this for \+ the first ten prime numbers" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "check2 := (a,p) -> evalb(modp(a &^ p - a, p) = 0);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'check2G:6$%\"aG%\"pG6\"6$%)operatorG%&arrowGF)- %&evalbG6#/-%%modpG6$,&-%#&^G6$9$9%\"\"\"F8!\"\"F9\"\"!F)F)" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "check2 (2,7);" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#%%trueG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 150 "check := proc (p::posint)\n local a;\n\n for a from 2 to p do \n if not check2 (a,p) then print (`Failure`); RETURN (); fi;\n od ;\n print (`Ok`);\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "check (5);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "check (6);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%(FailureG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "for i f rom 1 to 10 do check (ithprime (i)) od;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%#OkG" }}}{EXCHG {PARA 258 "" 0 "" {TEXT -1 245 "2. The following message was encoded with an affine matr ix cipher. The vectors were of length 2.\nThe alphabet was: upper cas e letters, followed by a space, followed by the lower case letters. T he message\nstarts: ``Why did''. Decode the message" }}{PARA 262 "" 0 "" {TEXT -1 91 " \+ iXazjeaeiuafiddjflaosdtpatiuafpseb" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 68 "Alphabet := `ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`; " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)AlphabetG%VABCDEFGHIJKLMNOPQRST UVWXYZ~abcdefghijklmnopqrstuvwxyzG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 133 "ToNum := proc (text)\n local i;\n global Alphabet; \n\n [seq (SearchText (substring (text, i), Alphabet) - 1, i=1..lengt h(text))];\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 131 "FromNu m := proc (numlist)\n local i;\n global Alphabet;\n\n cat (seq (sub string (Alphabet, numlist[i]+1), i=1..nops(numlist)));\nend:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 218 "TextToVects := proc (text,n )\n local i, j, textnums, vectors;\n\n textnums := ToNum (cat (text, seq(` `, i=1..modp (n - length(text), n))));\n [seq ( [seq (textnums [(j-1)*n + i], i=1..n)], j=1..nops(textnums)/n)];\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 66 "VectsToText := vects -> FromNum (ma p(op,map(convert,vects,list))):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 289 "AffineMatEncode := proc (text, A, B)\n local vtext, vcrypt, \+ i, n, p;\n global Alphabet;\n\n p := length (Alphabet);\n n := nops (convert(B,list));\n\n vtext := TextToVects (text, n);\n vcrypt := \+ [seq (map (modp, evalm (A &* vtext[i] + B), p), i=1..nops(vtext))];\n \+ VectsToText (vcrypt);\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "with(linalg):" }}{PARA 7 "" 1 "" {TEXT -1 32 "Warning, new defin ition for norm" }}{PARA 7 "" 1 "" {TEXT -1 33 "Warning, new definition for trace" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "plain := Text ToVects (`Why did`, 2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&plainG7& 7$\"#A\"#M7$\"#^\"#E7$\"#I\"#N7$F-F+" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "crypt := TextToVects (`iXazjea`, 2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&cryptG7&7$\"#N\"#B7$\"#F\"#_7$\"#O\"#J7$F*\"#E " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "A := matrix(2,2, [[a,b] ,[c,d]]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"AG-%'MATRIXG6#7$7$%\" aG%\"bG7$%\"cG%\"dG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "B := array(1..2, [e,f]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"BG-%'VECTO RG6#7$%\"eG%\"fG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "eq1 := \+ evalm (A &* crypt[1] + B - plain[1]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$eq1G-%'VECTORG6#7$,*%\"aG\"#N%\"bG\"#B%\"eG\"\"\"!#AF/,*%\"cGF+% \"dGF-%\"fGF/!#MF/" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "eq2 : = evalm (A &* crypt[2] + B - plain[2]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$eq2G-%'VECTORG6#7$,*%\"aG\"#F%\"bG\"#_%\"eG\"\"\"!#^F/,*%\"cG F+%\"dGF-%\"fGF/!#EF/" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "eq 3 := evalm (A &* crypt[3] + B - plain[3]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$eq3G-%'VECTORG6#7$,*%\"aG\"#O%\"bG\"#J%\"eG\"\"\"!#I F/,*%\"cGF+%\"dGF-%\"fGF/!#NF/" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 81 "msolve(\{eq1[1]=0,eq1[2]=0,eq2[1]=0,eq2[2]=0,eq3[1]=0,eq3[2]=0 \},length(Alphabet));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<(/%\"aG\"\"! /%\"eG\"#_/%\"dGF&/%\"cG\"\"\"/%\"fGF)/%\"bGF." }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 28 "subs(\",\{evalm(A),evalm(B)\});" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#<$-%'MATRIXG6#7$7$\"\"!\"\"\"7$F*F)-%'VECTORG6#7 $\"#_F0" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 83 "AffineMatEncode \+ (`iXazjeaeiuafiddjflaosdtpatiuafpseb`, [[0, 1], [1, 0]],[52, 52]); " } }{PARA 11 "" 1 "" {XPPMATH 20 "6#%CWhy~did~the~chicken~cross~the~roadG " }}}{EXCHG {PARA 264 "" 0 "" {TEXT -1 7 "3. For " }{TEXT 259 1 "n" } {TEXT -1 25 " a positive integer, let " }{TEXT 260 6 "phi(n)" }{TEXT -1 31 " denote the number of integers " }{TEXT 261 1 "a" }{TEXT -1 6 " with " }{TEXT 262 9 "0 < a < n" }{TEXT -1 11 " for which\n" }{TEXT 263 12 "gcd(a,n) = 1" }{TEXT -1 16 ". For example, " }{TEXT 264 10 "p hi(3) = 2" }{TEXT -1 10 " (because " }{TEXT 265 3 "a=1" }{TEXT -1 5 " \+ and " }{TEXT 266 3 "a=2" }{TEXT -1 6 " have " }{TEXT 267 12 "gcd(a,3) \+ = 1" }{TEXT -1 38 "). Write a Maple\nroutine to calculate " }{TEXT 268 6 "phi(n)" }{TEXT -1 23 ". Use it to calculate " }{TEXT 269 20 "p hi(1), ..., phi(10)" }{TEXT -1 1 "." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 140 "phi := proc (n::posint)\n local ans, i;\n\n ans := 0;\n for i from 1 to n-1 do\n if gcd(i,n) = 1 then ans := ans + 1 ; fi;\n od;\n ans;\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "phi (3);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"#" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "seq (phi(i), i=1..10);" }}{PARA 11 "" 1 " " {XPPMATH 20 "6,\"\"!\"\"\"\"\"#F%\"\"%F%\"\"'F&F'F&" }}}{EXCHG {PARA 269 "" 0 "" {TEXT -1 16 "4. The function " }{TEXT 270 3 "phi" } {TEXT -1 34 " has the following properties: if " }{TEXT 271 1 "p" } {TEXT -1 24 " is a prime number then " }{TEXT 272 14 "phi(p) = p - 1" }{TEXT -1 5 ";\nif " }{TEXT 273 1 "m" }{TEXT -1 5 " and " }{TEXT 274 1 "n" }{TEXT -1 23 " are relatively prime (" }{TEXT 275 1 "m" }{TEXT -1 5 " and " }{TEXT 276 1 "n" }{TEXT -1 25 " positive integers) then \+ " }{TEXT 277 22 "phi(mn) = phi(m)phi(n)" }{TEXT -1 6 ". Use" }}{PARA 272 "" 0 "" {TEXT -1 51 "these to check your implementation of the fun ction " }{TEXT 278 3 "phi" }{TEXT -1 1 "." }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 103 "for i from 1 to 20 do if phi(ithprime(i)) <> ithpr ime(i)-1 then print (ithprime(i), `Failure`); fi; od;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 129 "for m from 2 to 10 do for n from 2 to 10 do if gcd(m,n) = 1 and phi(m*n) <> phi(m)*phi(n) then print (m, n,`Failure`); fi; od; od;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 11 "Seem s ok..." }}}}{MARK "33 0 0" 11 }{VIEWOPTS 1 1 0 1 1 1803 }