これがフェルマーの小定理の実装です。なぜ機能しないのか誰か知っていますか?
私が守っているルールは次のとおりです。
- 素数性をテストする数を n とします。
- 2 から n-1 までの任意の整数 a を選択します。
- a^n mod n を計算します。
- a^n = a mod n かどうかを確認します。
マイコード:
int low = 2;
int high = n -1;
Random rand = new Random();
//Pick any integer a between 2 and n-1.
Double a = (double) (rand.nextInt(high-low) + low);
//compute:a^n = a mod n
Double val = Math.pow(a,n) % n;
//check whether a^n = a mod n
if(a.equals(val)){
return "True";
}else{
return "False";
}
これは 100000 未満の素数のリストです。これらの数値のいずれかを入力すると、「true」ではなく「false」が返されます。
これが、コードが機能していないと私が信じる理由です。