fork(1) download
  1. #include <stdio.h>
  2.  
  3. #define PRIME_TRUE 1
  4. #define PRIME_FALSE 0
  5.  
  6. int is_prime(int perhapsprime) {
  7.  
  8. int limit;
  9. int testfactor;
  10.  
  11. limit = (perhapsprime >> 1) + 1; /** SEE NOTES!!! */
  12.  
  13. for (testfactor = 3; testfactor <= limit; ++testfactor) {
  14. if ((perhapsprime % testfactor) == 0) /* If testfactor divides perhapsprime... */
  15. {
  16. return PRIME_FALSE; /* ...then, perhapsprime was non-prime. */
  17. }
  18. }
  19.  
  20. return PRIME_TRUE;
  21. }
  22.  
  23. int nextprime(int inval) {
  24. int perhapsprime; /* Holds a tentative prime while we check it. */
  25.  
  26. if (inval < 2) /* Initial sanity check of parameter. */
  27. {
  28. return (2); /* Easy special case. */
  29. }
  30.  
  31. /* Testing an even number for primeness is pointless, since
  32.   * all even numbers are divisible by 2. Therefore, we make sure
  33.   * that perhapsprime is larger than the parameter, and odd. */
  34. perhapsprime = (inval + 1) | 1;
  35.  
  36. while (is_prime(perhapsprime) != PRIME_TRUE) {
  37. perhapsprime += 2;
  38. }
  39. return perhapsprime;
  40. }
  41.  
  42. int main(void) {
  43. int from, prime;
  44. for (from = 0; from < 1000000; from += 10000) {
  45. prime = nextprime(from);
  46. printf("Next prime after %d is %d\n", from, prime);
  47. }
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0.5s 2248KB
stdin
Standard input is empty
stdout
Next prime after 0 is 2
Next prime after 10000 is 10007
Next prime after 20000 is 20011
Next prime after 30000 is 30011
Next prime after 40000 is 40009
Next prime after 50000 is 50021
Next prime after 60000 is 60013
Next prime after 70000 is 70001
Next prime after 80000 is 80021
Next prime after 90000 is 90001
Next prime after 100000 is 100003
Next prime after 110000 is 110017
Next prime after 120000 is 120011
Next prime after 130000 is 130003
Next prime after 140000 is 140009
Next prime after 150000 is 150001
Next prime after 160000 is 160001
Next prime after 170000 is 170003
Next prime after 180000 is 180001
Next prime after 190000 is 190027
Next prime after 200000 is 200003
Next prime after 210000 is 210011
Next prime after 220000 is 220009
Next prime after 230000 is 230003
Next prime after 240000 is 240007
Next prime after 250000 is 250007
Next prime after 260000 is 260003
Next prime after 270000 is 270001
Next prime after 280000 is 280001
Next prime after 290000 is 290011
Next prime after 300000 is 300007
Next prime after 310000 is 310019
Next prime after 320000 is 320009
Next prime after 330000 is 330017
Next prime after 340000 is 340007
Next prime after 350000 is 350003
Next prime after 360000 is 360007
Next prime after 370000 is 370003
Next prime after 380000 is 380041
Next prime after 390000 is 390001
Next prime after 400000 is 400009
Next prime after 410000 is 410009
Next prime after 420000 is 420001
Next prime after 430000 is 430007
Next prime after 440000 is 440009
Next prime after 450000 is 450001
Next prime after 460000 is 460013
Next prime after 470000 is 470021
Next prime after 480000 is 480013
Next prime after 490000 is 490001
Next prime after 500000 is 500009
Next prime after 510000 is 510007
Next prime after 520000 is 520019
Next prime after 530000 is 530017
Next prime after 540000 is 540041
Next prime after 550000 is 550007
Next prime after 560000 is 560017
Next prime after 570000 is 570001
Next prime after 580000 is 580001
Next prime after 590000 is 590021
Next prime after 600000 is 600011
Next prime after 610000 is 610031
Next prime after 620000 is 620003
Next prime after 630000 is 630017
Next prime after 640000 is 640007
Next prime after 650000 is 650011
Next prime after 660000 is 660001
Next prime after 670000 is 670001
Next prime after 680000 is 680003
Next prime after 690000 is 690037
Next prime after 700000 is 700001
Next prime after 710000 is 710009
Next prime after 720000 is 720007
Next prime after 730000 is 730003
Next prime after 740000 is 740011
Next prime after 750000 is 750019
Next prime after 760000 is 760007
Next prime after 770000 is 770027
Next prime after 780000 is 780029
Next prime after 790000 is 790003
Next prime after 800000 is 800011
Next prime after 810000 is 810013
Next prime after 820000 is 820037
Next prime after 830000 is 830003
Next prime after 840000 is 840023
Next prime after 850000 is 850009
Next prime after 860000 is 860009
Next prime after 870000 is 870007
Next prime after 880000 is 880001
Next prime after 890000 is 890003
Next prime after 900000 is 900001
Next prime after 910000 is 910003
Next prime after 920000 is 920011
Next prime after 930000 is 930011
Next prime after 940000 is 940001
Next prime after 950000 is 950009
Next prime after 960000 is 960017
Next prime after 970000 is 970027
Next prime after 980000 is 980027
Next prime after 990000 is 990001