 1. (2 ) ip㢠 ii pi i  i 䠩i in. 
ii   䠩i out,  类 ip⮢i  䠢i⭮ p浪. 
ᮬ  ᫮  ᫮ - ii  pi祩  䠩i in.
pp 室 pﭥ  pi.

 in:
This is a cat is a this cat a a cat

 out:
a 4
cat 3
is 2
this 2



 2. (2 )  pi ((((1?2)?3)?4)?5)?6 i   ? 
⠢  i  4 䬥筨 i +,-,*,/ ⠪, 鮡 १ 
᫥ pi N. ( ii ஡ ⨭  i i). 
 i ஧'離.

i: 쮣   4 䬥i i - "+","-","*","/".  
㬥  i 0  3. i  i ' i  "?"  
 i i i.  ᯨ᮪ A i 5 i ᥫ,  i- i
ᯨ 㤥 pi , ii i-  "?" i, ⮡ ᫮
i 0  3. ⪮ ii - i  ᨢ 쮢i, i楢 - 
i  pi 3. i p ii i iᨫ쭠
 i  ⢥i ⥬i ᫥,  i 
p㢠 i쪨 ࠬ i 0  3.
  H ணࠬ ࠣ i ii. i쬥 ᨢ A  
5,    6  i. p pi ⠭ ii i '
1  ⮬ ஧i (  33333  1,  p 100000 ).

   for i:=1 to 6 do A[i]:=0;
   while A[6]=0 do
    begin
            ....
    { ॢiઠ,  p  pi १ }
            ....
      i:=1;
      while A[i]=3  do { ७i  㯭 ஧  }
       begin           { i i }
         A[i]:=0;
         i:=i+1;
       end;
      A[i]:=A[i]+1;
    end;


 3. (2 ) 㯥   pi A(1), ...,A(n),  த - 
B(1),  .. ,B(m). i  ᨬ pi ⮢ ,  㯥 
  㯨, ⮬   i 筮 ஧p㢠  楩 ⮢ i 
த楬,  p襩  i 쮣 ⮢ .

i: .  2  䠩 ⢥p i (  2). 㪠
ii p'離!


 4. ( , 2 )  ᫮  pi .
᫮  i i 100 p.



㭪i 㢠

㭪i 㢠,  MAP - 㭪i (mapping function)  ᮡ 
 㭪i  i ணࠬ㢠 i.  i ࠢ쭮 㤥  
㭪i, i쪨  类i 㬥i  ਩ ii 㭪i. 
MAP - 㭪i iࠦ ᯨ᮪  ii   ii, 
 த i筨 䥪, 直  易  i ii. I 
㭪i 㢠 稭  MAP     : 
(MAPx fn i1 i2 ... iN),  fn _ 㭪i i N 㬥i, i1, i2, ...,iN - 
ᯨ᪨.  MAP - 㭪i ᮢ   㬥 - ᯨ, 
⮡ fn  㭪i  㬥: (MAPx fn <ᯨ᮪>).

1. ७ ᫥ 㭪i   ᯨ᪠
(MAPCAR <㭪i> <ᯨ᮪1> ... <ᯨ᮪N>)

 i <㭪i>  CAR-⠬ ᯨi, i  㣨 
⠬ ᯨi i ⠪ i       ᯨ  
i.   i ᯨi  ii  㭪i    
㯭 稭:

(DEFUN MAPCAR2 (func lst1 lst2)
((OR (NULL lst1) (NULL lst2)) NIL)
(CONS (FUNCALL func (CAR lst1) (CAR lst2))
      (MAPCAR2 func (CDR lst1) (CDR lst2)))  )

⮬ 㭪i  ᯨ᮪, 直 㤮  १i  
㭪i쭮 㬥 MAPCAR.

$ (MAPCAR  '+  '(1 2 3)  '(7 8 9) '(10 11 12))
(18 21 24)				

$ (MAPCAR 'cons '(1 2 3) '(a b c))
((1 . A) (2 . B) (3 . C))

$ (MAPCAR 'atom '(1 2 3 4)) 
(T T T T)

$ (MAPCAR '(lambda (x) (list x (* x x))) '(1 2 3))
((1 1) (2 4) (3 9))


2. ७ ᫥ 㭪i  墮⮢ ⨭ ᯨ᪠
(MAPLIST <㭪i> <ᯨ᮪1> ... <ᯨ᮪N>)

㭪i MAPLIST  ii i 㭪i MAPCAR i   ⠬ ᯨi, 
   墮⮢ iﬨ.  ᯮ i   
i ᯨ᪠, i -   CDR - ⠬, i ⠪ i    
 i ᯨi  㤥 ௠.   i ᯨi  ii  㭪i 
   㯭 稭:

(DEFUN MAPLIST2 (func lst1 lst2)
((OR (NULL lst1) (NULL lst2)) NIL)
(CONS (FUNCALL func lst1 lst2) (MAPLIST2 func (CDR lst1) (CDR lst2)))  )

$ (MAPLIST 'CONS '(1 2 3) '(10 11 12))
(((1 2 3) 10 11 12) ((2 3) 11 12) ((3) 12))

$ (MAPLIST 'REVERSE '(1 2 3 4))
((4 3 2 1) (4 3 2) (4 3) (4))


3. 'i 㭪i
(MAPCAN <㭪i> <ᯨ᮪1> ... <ᯨ᮪N>)
(MAPCON <㭪i> <ᯨ᮪1> ... <ᯨ᮪N>)
㭪i MAPCAN  MAPCON  ii  㭪i MAPCAR  MAPLIST, i쪨     ᯨ᮪  १i ⮢ 㭪i LIST,  _ १ (i _離 i  ᯨ᪠), ⮢ 㭪i NCONC.
_i 㭪i  ⮢㢠  i. i i஬  㤥 ஧i 㭪i, 猪    , i i i 㬮i. 㯭 ਪ ,   i ᯨ  i i_i ᫠.
$ (MAPCAN '(LAMBDA (n) ((MINUSP n)(LIST n))) '(2 -3 3 4 -4 -5 5))
(-3 -4 -5)

稬,  㯭i i ii:
(MAPCAN f '(x1 x2 ... xN))		(NCONC (f  'x1) (f  'x2) ... (f  'xN))
(MAPCAN f x1 x2 ... xN)			(APPLY 'NCONC (MAPCAR f x1 x2 ... xN))
(MAPCON f x1 x2 ... xN)			(APPLY 'NCONC (MAPLIST f x1 x2 ... xN))

$ (MAPCON 'REVERSE '(1 2 3))	  $ (APPLY 'NCONC (MAPLIST 'REVERSE '(1 2 3)))
(3 2 1 3 2 3)			  (3 2 1 3 2 3)

4. ᫥ 㭪i i 㡫 १

(MAPC <㭪i> <ᯨ᮪1> ... <ᯨ᮪N>)
(MAPL <㭪i> <ᯨ᮪1> ... <ᯨ᮪N>)

㭪i MAPC  MAPL  ii  㭪i MAPCAR  MAPLIST, i쪨
     ' १. ,  ਬ 
  i.  类i १  㣨 㬥 
㭪i. i 㭪i ⮢  ਬ 筮 䥪:

$ (MAPC '(LAMBDA (u v) (SET u v)) '(a b c) '(1 2 3))
(A B C)

i 쮣 祭 i a, b, c  ii ᢮i ᫠ 1,2  3.

㭪i 㢠  _㢠  i ᪫i ,  i 
 ⮢㢠  祭i i 㭪i. ਪ, i 
⮪     ਬ   i  
 i 㭪i MAPCAR (ࠢ  १ ஡ 㭪i):

(DEFUN decart (x y) 		$ (decart '(q w) '(2 3 4))
  (MAPCAR			(((Q 2) (Q 3) (Q 4)) ((W 2) (W 3) (W 4)))
    '(LAMBDA (x1)
       (MAPCAR '(LAMBDA (y1)	  i  㣮 浪 㭪i 
                   (LIST x1 y1))  MAPCAR  MAPCAN, ਬ:
                y)) 		  ((Q 2) (Q 3) (Q 4) (W 2) (W 3) (W 4))
  x))

MAP - 㭪i  i  㦭i i,   筨 
ᮡ  ணࠬ㢠i.   稫,  类i 讣  㬥  
㭪i.  i i ୮i i 㭪i, i 㭪i쭮 
㬥  ii ii 㬥i - ᯨi.  ᯨ᪨ ii  
i,  ii ७   i ⪮ ᯨ᪠.

ﭥ ਪ 㢠 㭪i 㢠  ਪi i
  . 㭪i vectorsum 室 , 直 i i 
  㬥i - i. 㭪i ADDMATR 室   .

(DEFUN vectorsum (x y)			(DEFUN addmatr (x y)
(MAPCAR '+ x y))			(MAPCAR 'vectorsum x y))

$ (addmatr '((1 2 3)(4 5 6)(7 8 9)) '((1 1 1)(2 2 2)(3 3 3)))
$ ((2 3 4) (6 7 8) (10 11 12))

㯭i । 㢠  ⮢i 㭪i  ⠬  
 i쪮 ᯨi   i  i i祭,  i 
 i ᯨi. i i 㭪i  i । <>  
car-_⠬ <ᯨ1>, ..., <ᯨN>, i  -   cadr-'⠬  
ᯨ  i  ⠪ i    ୥ 祭, ii i NIL,  
i i ᯨ.

1. (SOME <>, <ᯨ᮪1>, <ᯨ᮪2>, ..., <ᯨ᮪N>).     
祭,  ii i  NIL, SOME   祭.   i
ᯨ  ,  SOME  NIL. 㭪i SOME   㯭 
稭:

(DEFUN SOME (TST LST1 LST2)
 (LOOP
      ((OR (NULL LST1) (NULL LST2)) NIL)
      ((FUNCALL TST (POP LST1) (POP LST2))) ) )

$ (SOME 'EQL '(DOG CAT COW) '(COW CAT DOG))
T

$ (SOME 'PLUSP (LIST 0 -3 -4 -6))
NIL

2. (NOTANY <>, <ᯨ᮪1>, <ᯨ᮪2>, ..., <ᯨ᮪N>).   
祭, ii i NIL, NOTANY  NIL.  i i 
ᯨ,  . 㭪i NOTANY   㯭 稭:

(DEFUN NOTANY (TST LST1 LST2)
(NOT (SOME TST LST1 LST2)) )

$ (NOTANY 'EQL '(DOG CAT COW) '(COW CAT DOG))
NIL

$ (NOTANY 'ODDP (LIST 0 (+3 3) 7/2))
T

3. (EVERY <>, <ᯨ᮪1>, <ᯨ᮪2>, ..., <ᯨ᮪N>).    NIL, 
EVERY  NIL.  i i ᯨ, EVERY  . 㭪i 
EVERY   㯭 稭:

(DEFUN EVERY (TST LST1 LST2)
(LOOP
      ((OR (NULL LST1) (NULL LST2)) NIL)
      ((NOT (FUNCALL TST (POP LST1) (POP LST2))) T) )

$ (EVERY 'EQL '(DOG CAT COW) '(DOG CAT PIG))
NIL

$ (EVERY 'ODDP (LIST 3 5 7 11 13))
T

4. (NOTEVERY  <>, <ᯨ᮪1>, <ᯨ᮪2>, ..., <ᯨ᮪N>).    
NIL, NOTEVERY  .  i i ᯨy, NOTEVERY  
NIL. 㭪i NOTEVERY   㯭 稭:

(DEFUN NOTEVERY (TST LST1 LST2)
(NOT (EVERY TST LST1 LST2)) )

$ (NOTEVERY 'EQL '(DOG CAT COW) '(DOG CAT PIG))
T

$ (NOTEVERY 'STRING< '(BILL JACK JOE) '(BUD JIM SUE))
NIL

5. (REDUCE <㭪i> <ᯨ᮪> <⪮ 祭>)  ⢮ 祭 
i <ᯨ>   ⮣ 祭, ⮢ <㭪i> - 㭪i 
 㬥i. ⢮७ i㢠  iii  ⪮ 
祭 i ࠢ.  祭 ⪮ 祭  
i +  0,  *  1. 

$ (REDUCE 'CONS '(A B C D))	$ (REDUCE '* '(2 3 5 7))  $ (REDUCE '+ NIL)
(((A . B) . C) . D)		210			  0

$ (REDUCE '* '(2 3 5 7) -2)		$ (REDUCE '* NIL)
-420					1

ﭥ  ࠭ᯮ㢠 i,   i ᪫ ᯨ. 
㭪i TRANS ࠭ᯮ .

(DEFUN TRANS (matr)
((EVERY 'NULL matr) NIL)
(CONS (MAPCAR 'CAR matr) (TRANS (MAPCAR 'CDR matr))) )

ﭥ ஡ 㭪i TRANS  ਪi  ப:

(TRANS '((1 2 3)(4 5 6)(7 8 9)))
(CONS '(1 4 7) (TRANS '((2 3)(5 6)(8 9))))
(CONS '(1 4 7) (CONS '(2 5 8) (TRANS '((3)(6)(9)))))
(CONS '(1 4 7) (CONS '(2 5 8) (CONS '(3 6 9) (TRANS '( () () () )))))
(CONS '(1 4 7) (CONS '(2 5 8) (CONS '(3 6 9) NIL)))
(CONS '(1 4 7) (CONS '(2 5 8) '((3 6 9)) ))
(CONS '(1 4 7) '((2 5 8) (3 6 9)) )
((1 4 7)(2 5 8)(3 6 9))

i 襬 㭪i MULT -   .  ᯮ 襬 
i쪠 i 㭪i.
㭪i SCALAR 室 ᪠୨ ⮪  i, ।⠢ 
ᯨ᪠ x  y.

(DEFUN SCALAR (x y)			$ (SCALAR '(1 2 3) '(4 5 6))
(APPLY '+ (MAPCAR '* x y)) 		32

㭪i MULT2  ᯨ᮪ ᪠୨ i  x   ᯨ y,
i  ࠬ

(DEFUN MULT2 (x y)
(MAPCAR 'SCALAR (MAKE-LIST (LENGTH x) x) y) )

$ (MULT2 '(1 2 3) '((1 2 3)(4 5 6)(7 8 9)))
(14 32 50)

㭪i MULT1 ⢮ ᯨ᮪ ᯨi ᪠୨ i i  
i x  y.

(DEFUN MULT1 (x y)
(MAPCAR 'MULT2 x (MAKE-LIST (LENGTH y) y)) )

$ (MULT1 '((1 2 3)(4 5 6)(7 8 9)) '((1 2 3)(4 5 6)(7 8 9)))
((14 32 50) (32 77 122) (50 122 194))

(DEFUN MULT (x y)
(MULT1 x (TRANS y)) )

$ (MULT '((1 2 3)(4 5 6)(7 8 9)) '((1 2 3)(4 5 6)(7 8 9)))
((30 36 42) (66 81 96) (102 126 150))




1.  ii ⮬i  ᯨ  iᯨ᪠.
2.   ᯨ  iᯨ᪠.
3.  i訩 (訩)   ᯨ  iᯨ᪠.
4.   i ᪫ ᯨ᮪  ॢ  ( 类 i  ᫠),  㭪i ii-᭮ .
5. iਧ㢠 ᯨ᮪.
6.  i  m*n ⢮ ᯨ᪨ x1x2...xn,  xi - 㬠 ᥫ i- ⮢稪  y1y2...yn,  yi - 㬠 ᥫ i- 浪.
7.  㭪i rev ୥ ᯨ  iᯨ᪠.
8.   ᥫ i.

iii

1. $ (DEFUN catom (s)
     ((ATOM s) 1)
     (APPLY '+ (MAPCAR 'catom s))  )

2. $ (DEFUN depth (s)
     ((ATOM s) 0)
     (ADD1 (APPLY 'MAX (MAPCAR 'depth s)))  )

3. $ (DEFUN biggest (s)
     ((ATOM s) s)
     (APPLY 'MAX (MAPCAR 'biggest s))  )

4. $ (DEFUN big1 (s) 			(DEFUN sm1 (s)
     ((ATOM s) s)			((ATOM s) s)
     (APPLY 'MAX (MAPCAR 'sm1 s))  )	(APPLY 'MIN (MAPCAR 'big1 s)) )

5. $ (DEFUN lin (s)
     ((ATOM s) (LIST s))
     (MAPCAN 'lin s))

6. $ (DEFUN sum (matr)
     ((EVERY 'NULL matr) NIL)
     (CONS (APPLY '+ (MAPCAR 'CAR matr)) (sum (MAPCAR 'CDR matr)))  )

$ (DEFUN sumr (matr)
  ((EVERY 'NULL matr) NIL)
  (CONS (APPLY '+ (CAR matr)) (sumr (CDR matr)))  )

7. $ (DEFUN rev (lst)
     ((ATOM lst) lst)
     (REVERSE (MAPCAR 'rev lst))  )

8. $ (DEFUN SUMatom (s)
     ((ATOM s) s)
     (APPLY '+ (MAPCAR 'SUMatom s))  )


pi ᫠.

ﭥ p p ᫠  pi .   p
pip:  p .  쮣  p ii   
p.  ᫮  p, ⮤i 㢠 p 室 
i쭨.

p i 室 H.

.  a  b - i ii ᫠, a > b, 
      ⮤i (a, b) = (b, a mod b).

 i  ᫥   i ᥫ.
I:  i'󬭨 ᫠ a  b, a i b.
I: (a, b)
1. while b <> 0 do
    begin
        r = a mod b; a = b; b = r;
    end;
2. return(a);

ਪ.  i. ᫥ (4864, 3458).

4864 = 1* 3458 + 1406
3458 = 2 * 1406 + 646
1406 = 2 * 646 + 76
  114 = 1 * 76 + 38
    76 = 2 * 38 + 0

 i  ஧  室 ⠪ i ᥫ x  y, 
 a * x + b * y = d.

७  i.

I:  i'󬭨 ᫠ a  b, a > b.
I: d = (a, b)  ⠪i ii ᫠ x  y,  a * x + b * y = d.

1. if b = 0 then
   begin
      d = a; x = 1; y = 0; return(d, x, y);
   end;
2, x2 = 1; x1 = 0; y2 = 0; y1 = 1;
3. while b > 0 do
    begin
q = [a / b]; r = a - q * b; x = x2 - q * x1; y = y2 - q * y1;
a = b; b = r; x2 = x1; x1 = x; y2 = y1; y1 = y;
    end;
4. d = a; x = x2; y = y2; return(d, x, y);

p. ७  i. ᫥ (4864, 3458).

q	r	x	y	a	b	x2	x1	y2	y1
				4864	3458	1	0	0	1
1	1406	1	1	3458	1406	0	1	1	1
2	646	2	3	1406	646	1	2	1	3
2	114	5	7	646	114	2	5	3	7
5	76	27	38	114	76	5	27	7	38
1	38	32	45	76	38	27	32	38	45
2	0	91	128	38	0	32	91	45	128

: (4864, 3458) = 38,  쮬 4864 * 32 + 3458 * (-45) = 38.

(defun gcd (a b)
((ZEROP b) a)
(SETQ tmp  (mod a b) a b b tmp)
(gcd a b)
)


p p  室 i쭨 p쭮 ᫠ n.

 ii ᥫ 㯭 稭: X(0) = 2, X(i+1) = f(X(i)),
  类i 㭪i f p f(x) = (x^2 + c) mod n,  c - 瘟
p쭥 ᫮, c<>0, c<>2, n - ᫮, i쭨 类 室.
( <>  " pi")
, p, f(x) = (x*x + 1) mod 91, n = 91, p ii
X0 =                    2,
X1 = f(2) + 1 mod 91 =  5,
X2 = f(5) + 1 mod 91 = 26,
X3 = f(26)+ 1 mod 91 = 40,
i ⠪ i.

  I 室 i쭨 ᫠ n   ⠪ 䠪i:
  㭪i f(x) = (x*x + c) mod n  i ᫠, i i i室
 p'離 ⠢ i.
  㤥 㪠 ii쭥 祭 m,  类  ii X(m) 
 X(2*m) pii i ᮡ.

i: ᪫ p쭥 ᫮ n 瘟   ⥯i p⮣ ᫠.
i: i쭨 d ᫠ n.
a = 2, b = 2.
for i = 1, 2, ...do the following:
{
  a = (a^2 + 1) mod n
  b = (b^2 + 1) mod n
  b = (b^2 + 1) mod n
}
d = gcd(a - b, n)
 1<d<n,  p d.
 d = n,  p㢠 i 祭 c  㭪i f(x) = x^2 + c.

i:  p  祭 n 横 i쭨   室,
 p i 祭   㭪i f(x).

p n = 91. ii Xi  : 2, 5, 26, 40, 53, ...

m=1: H(5-2,91)  = H(3,91)  = 1. Hi
m=2: H(40-5,91) = H(35,91) = 7. i쭨.

p n = 899. ii Xi  : 2, 5, 26, 677, 739, ...

m=1: H(5-2,899)    = H(3,899)  = 1. Hi
m=2: H(40-5,899)   = H(35,899) = 1. Hi
m=3: H(739-26,899) = H(713,899) = 31. i쭨.


(DEFUN Polard (n)
(SETQ a 2 b 2)
(LOOP
  (SETQ a (mod (- (* a a) 1) n))
  (SETQ b (mod (- (* b b) 1) n))
  (SETQ b (mod (- (* b b) 1) n))
  (SETQ d (gcd (- a b) n))
  ((< 1 d n) d)
  ((= d n) nil)
)
)
p p  i 䥪⨢  i pi i쭨.
 쭮   p ᫠  pi   p'吝.

H㯭 㭪i 室 p ᫠  pi .

(DEFUN primes (n)
((= n 1) 1)
(setq tmp (polard n))
(PRINT tmp)
(SETQ n (/ n tmp))
(primes n)
)

  pip ᥫ  p.

  p p.  H(a,p)=1,  a^(p-1) = 1 (mod p). 
  㢠:  ⠭쮬 pi   㢠i pii  㫥.
  
  ⦥  p - p,  a^(p-1) = 1 (mod p)  i쭮 a: 1<=a<=n-1.

  p ⢥p,  ,  i᭥. 
  p. n = 11*31 = 341. H堩 a=2. i 2^(340) = 1 (mod 341), 
᫮ 341 ᪫.    pp i i 祭 a ᯮi
 ,         p  ⨢ p.
 ᯮi  p. I ⠪i ᪫i ᫠ n, 
pp i i i 祭 a,   p ⨢ iii.
 ᥫ ,  ⠪ ᫮ pi 561 = 3*11*17.

  pi,    类 祭 n, 瘟 pip  p,
祭 a^(n-1) (mod n)  pi 1, 1<=a<=n-1,  ᫮ n ᪫.  
a^(n-1) (mod n) pi 1,  i H ,   p.

  㤥 p,  ᫮ n ᥢp,  a^(n-1) = 1 (mod n).

  I ⠪ ii   p (H H ), i ᠭi 
 i "p p⮣pi" ( ⠭i  쮣 䠩).



  p pi p pi ᫠  pi  
 www.rsa.com (pi challenge).  factoring.zip i  i
ipi.   pi WINDOWS!!! (i   pi
i i i ⨭ 䠩i 㤥 㡫).
  稬     p p⮣pi  p i,
  㤥  i pi, i  p'離 ,
p  www.rsa.com (850 pi, .).
