From 7c1bd03a71cccfcf48e79d241787021b0de98e73 Mon Sep 17 00:00:00 2001 From: hachem Date: Sun, 4 Oct 2026 02:02:15 +0200 Subject: feat: add more user programs --- user/primes.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 user/primes.c (limited to 'user/primes.c') diff --git a/user/primes.c b/user/primes.c new file mode 100644 index 0000000..49c545a --- /dev/null +++ b/user/primes.c @@ -0,0 +1,42 @@ +#include "user.h" + +void _start(void) +{ + put("primes up to N, enter N (empty line quits)\n"); + char line[32]; + for (;;) + { + put("> "); + int length = read_line(line, 32); + put("\n"); + if (length == 0) + break; + + long limit = 0; + for (int position = 0; position < length; position++) + if (line[position] >= '0' && line[position] <= '9') + limit = limit * 10 + (line[position] - '0'); + + int count = 0; + for (long candidate = 2; candidate <= limit; candidate++) + { + int prime = 1; + for (long divisor = 2; divisor * divisor <= candidate; divisor++) + if (candidate % divisor == 0) + { + prime = 0; + break; + } + if (prime) + { + put_int(candidate); + put(" "); + count++; + } + } + put("\n"); + put_int(count); + put(" primes\n"); + } + sys_exit(0); +} -- cgit v1.3