#include <stdio.h> #include <stdbool.h> #include <inttypes.h> #include <math.h> bool is_prime(uint64_t n) { if (n < 2) return false; if (n < 4) return true; if (n % 2 == 0 || n % 3 == 0) return false; uint64_t sqrt_n = sqrt(n); for (uint64_t i = 5; i <= sqrt_n; i += 6) { if (n % i == 0 || n % (i + 2) == 0) { return false; } } return true; } int main(int argc, char **argv) { if (argc < 2) { fputs("Pass a positive integer as an argument.\n", stderr); return 1; } uint64_t input; if (argv[1][0] == '-' || sscanf(argv[1], "%" SCNu64, &input) != 1) { fputs("This is not a positive integer.\n", stderr); return 1; } printf("This integer %s prime.\n", is_prime(input) ? "is" : "is not"); return 0; }