]> mj.ucw.cz Git - libucw.git/commitdiff
In some cases, nextprime(x) could have been equal to x (reported by Milan).
authorMartin Mares <mj@ucw.cz>
Mon, 18 Nov 2002 17:56:16 +0000 (17:56 +0000)
committerMartin Mares <mj@ucw.cz>
Mon, 18 Nov 2002 17:56:16 +0000 (17:56 +0000)
lib/prime.c

index 0ed0eda107c308e3e8123156037d97c41bf7cc73..9be4c411c05ece16c9c1c550d89812498c4e371c 100644 (file)
@@ -47,32 +47,32 @@ isprime(uns x)
 }
 
 uns
-nextprime(uns x)                       /* Returns some prime greater than X, usually the next one or the second next one */
+nextprime(uns x)                       /* Returns some prime greater than x */
 {
   x += 5 - (x % 6);                    /* x is 6k-1 */
   for(;;)
     {
-      if (__isprime(x))
-       return x;
       x += 2;                          /* 6k+1 */
       if (__isprime(x))
        return x;
       x += 4;                          /* 6k-1 */
+      if (__isprime(x))
+       return x;
     }
 }
 
 #ifdef TEST
 
 #include <stdio.h>
+#include <stdlib.h>
 
 int
 main(int argc, char **argv)
 {
   uns k = atol(argv[1]);
-  if (isprime(k))
-    printf("%d is prime\n");
-  else
-    printf("Next prime is %d\n", nextprime(k));
+  printf("%d is%s prime\n", k, isprime(k) ? "" : "n't");
+  printf("Next prime is %d\n", nextprime(k));
+  return 0;
 }
 
 #endif