jak udelat _cislo_ MOD 7 ?
Zdenek Dvorak
zdvorak
Středa Březen 17 11:51:45 CET 2004
napadlo me:
tmp2:=0;
repeat
tmp1:=7;
while ((tmp2+tmp1*7)<_cislo_) do tmp1:=tmp1*7;
tmp2:=tmp2+tmp1;
until (tmp2+7)>tmp;
_modulo_:=_cislo_-tmp2;
a nasobeni 7 delam jako x+(x<<1)+(x<<2)
Je to rychle pro libovolne velka cisla.
Zatim to ale vypada, ze pro tento ucel bude vyhodnejsi algoritmus
VodochodyII.
chaos
> To neni vubec spatny napad, ale urychlil bych ty podminky. Bud by
> podminka nebyla splnena, tak by se to odecteni preskocilo, nebo by byla
> splnena a doslo by k odecteni, ALE nevznikaji cykly jako ve vyse
> uvedenem pripade, tj. dalsi skoky navic!
> CHTELO by to spocitat, co je rychlejsi.
>
> 2. Je vetsi nebo rovno 32774? Pokud ano, odecti 32774 (nemusim se nikam
> vracet, protoze vetsi uz to nikdy nebude 65535-32774=32761)
> 3. Je vetsi nebo rovno 16387? Pokud ano, odecti 16387 (totez,
> 32773-16387=16386)
> 4. Je vetsi nebo rovno 8197? Pokud ano odecti 8197 (opet
> 16386-8197=8189)
> 5. podm. 4102? ... (8196-4102=4094)
> 6. podm. 2051? ... (4101-2051=2050)
> 7. podm. 1029? ... (2050-1029=1021)
> 8. podm. 518? ... (1028-518=510)
> 9. podm. 259? ... (517-259=258)
> 10. podm. 133? ... (258-133=125)
> 11. podm. 70? ... (132-70=62)
> 12. podm. 35? ... (69-35=34)
> 13. podm. 21? ... (34-21=13)
> 14. podm. 14? ... (20-14=7)
> 15. podm. 7? ... (13-7=6)
> ... tady uz bude vysledek
>
> Cau PAT
>
Další informace o konferenci Hw-list