' 素数判定 ' Miller's Test ' 合成数であるか判定する。 Input "数を入力して下さい。",N b=1 result = 0 While (result=0) and ((b<7) and (b1 then Result = 1 :'合成数 Else Result = 0 : '判定不能 End if End Sub Sub MillerTest(n,b, result) n1=n-1 r=1 While (n1 = Int(n1)) and (r=1) r= PowerMod(b,n1,n) n1 = n1 / 2 Wend If (r=1) or (r = n -1) then Result = 0 :'判定不能 Else Result = 1 :'合成数 End if End Sub Function PowerMod(a,n,m) pw = 1 While n >= 1 If (n mod 2) = 1 then pw = MulMod(a,pw,m) End If a = MulMod(a,a,m) n = n \ 2 Wend PowerMod = pw End Function Function MulMod(a,n,m) mu = 0 While n >= 1 If (n mod 2) = 1 then mu = (a + mu) mod m End If a = a * 2 mod m n = n \ 2 Wend MulMod = mu mod m End Function