Posted By: Xyster (X! [({})]) on 'CZriddles' Title: Re: 2 matematici Date: Thu Mar 8 16:18:41 2001 Takze asi postnu reseni ... :) > jsou dany 2 prirozeny cisla > 1. Udelame jejich soucet a soucin. > 2 matematikum A a B rekneme jednomu soucin (A), druhymu soucet (B). > Pak si matematici reknou: > > Varianta 1: > A1: Nevim co to je za cisla. > B1: To jsem vedel. > A2: Tak ted uz to vim. > B2: Tak ja uz taky. A1: A by vedel, o jaka cisla se jedna, pokud by obe byla prvocisla B1: = soucet nesmi byt rozlozitelny na dne prvocisla: - vytvorime mnozinu C prirozenych cisel, ktere nejsou souctem 2 prvocisel ... A2: A zna nejaky soucin a vi, ze soucet je ve mnozine z B1. Staci mu rozlozit sve cislo na mozne souciny dvou cislel a zkontrolovat soucty. Najde jednoznacne reseni. : najdeme souciny (D) , pro ktere plati podminka jednoznacnosti - vytvorime ?skupinu? D1 soucinu odpovidajicich souctum C - vytvorime mnozinu D prvku D1, ktere se v D1 vyskytuji pouze 1 B2: = B musi mit takovy soucet, ze mu odpovida prave jeden jednoznacny soucin z D. - pro kazdy soucet z C najdeme vsechny souciny E1(Cn) a urcime prunik E1(Cn) s D. Pokud prunik ma jen jeden prvek, dopocteme hledana cisla. ---- Pokud ma byt zadani jednoznacne, musi existovat pouze jedno reseni a staci najit prvni. Experimentalne opravdu existuje pouze jedno reseni pro cisla mensi nez 100 ;) Ale asi by bylo zajimave dokazat, ze pro existuje pouze jedno Cn, pro ktere existuje jednoprvkovy prunik. --- .... a ted slibeny LISP ;) ... asi by to slo napsat lepe(a hlabvne efektivneji), ale takhle to bylo nejrychlejsi ... ;; prvocisla (defun primes (max) (loop for i from 2 to max when (system:primep i) collect i) ) ;; prvocisla splnujici podminku nejednoznacnosti (defun sums-valid-1 (max) (let ((prms (primes max)) (valid (loop for i from 4 to (* 2 max) collect i)) ) (loop for p1 in prms do (loop for p2 in prms do (setf valid (delete (+ p1 p2) valid)) ) ) valid) ) ;; seznam moznych soucinu pro dany soucet (defun sum-muls (sum) (loop for i from 2 to (/ sum 2) collect (* i (- sum i)) ) ) ;; souciny, ktere jsou jenzoznacne (jen v jednom souctu) (defun muls-single (sums) (let (muls muls-invalid) (loop for sum in sums do (loop for mul in (sum-muls sum) do (if (member mul muls) (setf muls-invalid (adjoin mul muls-invalid)) (setf muls (cons mul muls)) ) ) ) (set-difference muls muls-invalid) ) ) ;; soucty, kteryn odpovida pouze jeden jednoznacny soucin (defun sums-valid-2 (sums) (let ((muls-valid (muls-single sums))) (loop for sum in sums when (= (length (intersection muls-valid (sum-muls sum))) 1) collect (list sum (car (intersection muls-valid (sum-muls sum)))) ) ) ) (defun res (max) (sums-valid-2 (sums-valid-1 max)) ) ... No ... zjistil jsem, z v matematicke terminologii a teorii dost tapu ... takze se vsem pritomnym matematikum (a ostatnim) omlouvam ... > > Prevzato z Lamohlavu (www.novinky.cz) a > http://www.vsb.cz/mdg/pkovar/zabava.html. > Zdravi Mantak Xyster 42