/* * Project : Embedding SWI-Prolog in a C program. * * Author : Lens Stephane Ulg * Date : 10/2009 * * Check if an integer is prime. * */ #include #include int main(int argc, char *argv[]) { int res, nb = 0; /* Initialise Prolog */ if ( !PL_initialise(argc, argv) ) PL_halt(1); /* Get the integer to test */ printf("Number to test (-1 to quit) ? : "); res = scanf("%i", &nb); while (res == 1 && nb > -1) { /* Transform the integer to Prolog term */ term_t h0 = PL_new_term_refs(1); PL_unify_integer(h0, nb); /* Call the predicate */ res = PL_call_predicate(NULL, PL_Q_NORMAL, PL_predicate("prime", 1, "user"), h0); if (res) printf("%i is prime.\n", nb); else printf("%i is not prime.\n", nb); printf("\nNumber to test (-1 to quit) ? : "); res = scanf("%i", &nb); } printf("\n> Exit\n"); /* Stop Prolog */ PL_halt(0); return 0; }