--- /dev/null
+#include <stdlib.h>
+#include <stdio.h>
+
+int main(int argc, char **argv) {
+ if (argc != 4) puts("bad invocation"), exit(1);
+ int p = atoi(argv[1]);
+ int a = atoi(argv[2]);
+ int b = atoi(argv[3]);
+
+ int candidate_b = 1;
+ for (int candidate_log = 0; candidate_log < p; candidate_log++) {
+ if (candidate_b == b) {
+ printf("solution: discrete log is %d\n", candidate_log);
+ exit(0);
+ }
+ candidate_b = (candidate_b * a) % p;
+ }
+
+ printf("no hits???\n");
+ return 1;
+}