フェルマーの小定理は\(p\)が素数、\(a\)を\(p\)の倍数でない整数とすると
\begin{align}
a^{p-1} \equiv 1 \pmod{p}
\end{align}
が成り立つというものである。\(\mathrm{mod}\)は\(p\)で割ったときの余りを示している。
今回はMATLABで関数を定義し計算を行う。なお入力の\(a,p\)はベクトルであり、次元を合わせてあれば大きさは問題にならない。
ソースコード
a=[2,4]; p=[4,5];
[f,~]=Fermat_little_theorem(a,p);
f
function [result,result1] = Fermat_little_theorem(a,p)
for i=1:1:length(a)
if rem(a(1,i),p(1,i))==0
error('You cannot select multiples of p!')
end
end
result1=a.^(p-1);
result=mod(result1,p);
end
コメント