fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <limits.h>
  5. #include <math.h>
  6.  
  7. bool is_prime(unsigned long i) {
  8. if (i == 2)
  9. return true;
  10. if (i % 2 == 0)
  11. return false;
  12. unsigned int j;
  13. double root = sqrtl(i);
  14. for (j = 3; j < root; j += 2)
  15. if (i % j == 0)
  16. return false;
  17. return true;
  18. }
  19.  
  20. int main(void) {
  21.  
  22. char buffer[1025];
  23. while (fgets(buffer, 1025, stdin) != NULL) {
  24. unsigned long num;
  25. if (sscanf(buffer, "%lu", &num) != 1) {
  26. fprintf(stderr, "input a number!\n");
  27. continue;
  28. }
  29.  
  30. if (is_prime(num) == true) {
  31. printf("%lu is prime.\n", num);
  32. } else {
  33. unsigned long i;
  34. for (i = num - 1; i >= 2; i--) {
  35. if (is_prime(i) == true) {
  36. printf("%lu < %lu < ", i, num);
  37. break;
  38. }
  39. }
  40. for (i = num + 1; i <= ULONG_MAX; i++) {
  41. if (is_prime(i) == true) {
  42. printf("%lu\n", i);
  43. break;
  44. }
  45. }
  46. }
  47. }
  48.  
  49. return EXIT_SUCCESS;
  50. }
Success #stdin #stdout 0s 10320KB
stdin
270
541
993
649
2010741
stdout
269 < 270 < 271
541 is prime.
991 < 993 < 997
647 < 649 < 653
2010733 < 2010741 < 2010881