September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -0,0 +1,77 @@
|
|||
EnableExplicit
|
||||
DisableDebugger
|
||||
DataSection
|
||||
LBL_n1:
|
||||
Data.i 3,5,7
|
||||
LBL_a1:
|
||||
Data.i 2,3,2
|
||||
LBL_n2:
|
||||
Data.i 11,12,13
|
||||
LBL_a2:
|
||||
Data.i 10,4,12
|
||||
LBL_n3:
|
||||
Data.i 10,4,9
|
||||
LBL_a3:
|
||||
Data.i 11,22,19
|
||||
EndDataSection
|
||||
|
||||
Procedure ErrorHdl()
|
||||
Print(ErrorMessage())
|
||||
Input()
|
||||
EndProcedure
|
||||
|
||||
Macro PrintData(n,a)
|
||||
Define Idx.i=0
|
||||
Print("[")
|
||||
While n+SizeOf(Integer)*Idx<a
|
||||
Print("( ")
|
||||
Print(Str(PeekI(a+SizeOf(Integer)*Idx)))
|
||||
Print(" . ")
|
||||
Print(Str(PeekI(n+SizeOf(Integer)*Idx)))
|
||||
Print(" )")
|
||||
Idx+1
|
||||
Wend
|
||||
Print(~"]\nx = ")
|
||||
EndMacro
|
||||
|
||||
Procedure.i Produkt_n(n_Adr.i,a_Adr.i)
|
||||
Define p.i=1
|
||||
While n_Adr<a_Adr
|
||||
p*PeekI(n_Adr)
|
||||
n_Adr+SizeOf(Integer)
|
||||
Wend
|
||||
ProcedureReturn p
|
||||
EndProcedure
|
||||
|
||||
Procedure.i Eval_x1(a.i,b.i)
|
||||
Define b0.i=b, x0.i=0, x1.i=1, q.i, t.i
|
||||
If b=1 : ProcedureReturn x1 : EndIf
|
||||
While a>1
|
||||
q=Int(a/b)
|
||||
t=b : b=a%b : a=t
|
||||
t=x0 : x0=x1-q*x0 : x1=t
|
||||
Wend
|
||||
If x1<0 : ProcedureReturn x1+b0 : EndIf
|
||||
ProcedureReturn x1
|
||||
EndProcedure
|
||||
|
||||
Procedure.i ChineseRem(n_Adr.i,a_Adr.i)
|
||||
Define prod.i=Produkt_n(n_Adr,a_Adr), a.i, b.i, p.i, Idx.i=0, sum.i
|
||||
While n_Adr+SizeOf(Integer)*Idx<a_Adr
|
||||
b=PeekI(n_Adr+SizeOf(Integer)*Idx)
|
||||
p=Int(prod/b) : a=p
|
||||
sum+PeekI(a_Adr+SizeOf(Integer)*Idx)*Eval_x1(a,b)*p
|
||||
Idx+1
|
||||
Wend
|
||||
ProcedureReturn sum%prod
|
||||
EndProcedure
|
||||
|
||||
OnErrorCall(@ErrorHdl())
|
||||
OpenConsole("Chinese remainder theorem")
|
||||
PrintData(?LBL_n1,?LBL_a1)
|
||||
PrintN(Str(ChineseRem(?LBL_n1,?LBL_a1)))
|
||||
PrintData(?LBL_n2,?LBL_a2)
|
||||
PrintN(Str(ChineseRem(?LBL_n2,?LBL_a2)))
|
||||
PrintData(?LBL_n3,?LBL_a3)
|
||||
PrintN(Str(ChineseRem(?LBL_n3,?LBL_a3)))
|
||||
Input()
|
||||
Loading…
Add table
Add a link
Reference in a new issue