Hej alle,
Jeg sidder med en opgave i programmering på mit studie, der går ud på at lave en funktion der tester om et tal er et primtal og derefter returner true.
Jeg har valgt, at kigge på Fermat og jeg ved godt den er "probabilistic" og derved kun angiver at der mulighed for at et tal er et primtal.
(Se mere her:
http://en.wikipedia.org/wiki/Fermat_primality_test )
Jeg er kommet frem til følgende kode:
- static bool isPrime(int n)
- {
- bool isPrime = true;
-
- Random a = new Random();
-
- for (double i = 1; i < 100000; i++)
- {
- int j = a.Next(1, (n - 1));
-
- if (Math.Pow((double) j, (double)(n - 1)) % n != 1)
- {
- isPrime = false;
-
- break;
- }
- else
- {
- isPrime = true;
- }
- }
-
- return isPrime;
- }
Den falder dog allerede sammen ved 17 og siger det er et sammensat tal. Som jeg har forstået det, så er et Fermat Liar et sammensat tal, eller er det et tal som er et primtal, men som foregives at være sammensat?
Jeg håber i har et forslag. På forhånd tak.