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