-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMRTEST.8xp
136 lines (124 loc) · 1.99 KB
/
MRTEST.8xp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
If F≠π
Then
0→Y:0→X
0→Ymin:0→Xmin
265→Ymax:164→Xmax:9→Yscl:15→Xscl
TextColor(BLUE)
Disp "Check if A is a"
Disp "Miller Rabin witness"
Disp "of N's compositeness"
Prompt N,A
End
A→U
A→P
N-1→θ
0→K
Repeat remainder(θ,2)
θ/2→θ
K+1→K
End
(N-1)/2^K→Q
ClrDraw
DispGraph
N-1→V
prgmZOUTNUM
Text(X,Y,"=")
Y+Yscl→Y
Q→V
prgmZOUTNUM
Text(X,Y,"*2^")
Y+3*Yscl→Y
K→V
prgmZOUTNUM
0→Y
X+Xscl+5→X
Text(X,Y,"0≤i≤k-1 | a^q(2^i)")
0→Y
X+Xscl→X
For(J,0,K-1)
Text(X,Y,"i=")
Y+2*Yscl→Y
J→V
prgmZOUTNUM
5*Yscl→Y
Text(X,Y,"|")
Y+Yscl→Y
P→V
prgmZOUTNUM
Text(X,Y,"^")
Y+Yscl→Y
If J=0
Then
Q→V
prgmZOUTNUM
Text(X,Y,"=")
Y+Yscl→Y
π→S
If F=π
Then
U→G
Q→A
prgmFASTPOW
Else
π→F
U→G
Q→A
prgmFASTPOW
0→F
End
0→S
Else
2→V
prgmZOUTNUM
Text(X,Y,"=")
Y+Yscl→Y
π→S
If F=π
Then
P→G
2→A
prgmFASTPOW
Else
π→F
P→G
2→A
prgmFASTPOW
0→F
End
0→S
End
R→P
P→V
If J=0
Then
If R=1 or R=(N-1)
Then
TextColor(RED)
prgmZOUTNUM
Text(X,Y,"=+-1 (FAIL)")
TextColor(BLUE)
Return
Else
TextColor(GREEN)
prgmZOUTNUM
Text(X,Y,"≠+-1")
TextColor(BLUE)
End
Else
If R=(N-1)
Then
TextColor(RED)
prgmZOUTNUM
Text(X,Y,"=-1 (FAIL)")
TextColor(BLUE)
Return
Else
TextColor(GREEN)
prgmZOUTNUM
Text(X,Y,"≠-1")
TextColor(BLUE)
End
End
0→Y
X+Xscl→X
End