From c6250677ddbe6b175521677ab40fd0df7b14eed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= Date: Fri, 27 Mar 2026 15:16:44 +0100 Subject: [PATCH] added prime_test_t type --- main.c | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/main.c b/main.c index effc228..e5b8414 100644 --- a/main.c +++ b/main.c @@ -97,39 +97,31 @@ bool prime_test(uint64_t n, int a) { return false; } +typedef struct { + int base; + uint64_t prime; +} prime_test_t; + void *prime_thread_worker(void *arg) { - uint64_t *result_ptr = (uint64_t *)arg; + prime_test_t *result_ptr = (prime_test_t *)arg; do { - *result_ptr = rand64(); + result_ptr->prime = rand64(); printf("\nGenerating a new prime number (%p). Candidate: ", result_ptr); - printf("%ju", *result_ptr); + printf("%ju", result_ptr->prime); printf("\n"); - } while (!prime_test(*result_ptr, 2)); + } while (!prime_test(result_ptr->prime, result_ptr->base)); return NULL; } int main() { - // prime_test(111, 5); - // prime_test(29, 2); - // prime_test(27, 2); - // prime_test(17, 2); - // prime_test(661, 2); - // prime_test(18446744073709551557UL, 2); - // prime_test(18446744073709551533UL, 3); - - uint64_t p = 0; - uint64_t q = 0; srand(time(NULL)); + uint64_t base = 2; pthread_t thread_p, thread_q; - - // for (int i = 0; i < 10; i++) { - // p = rand64(); - // printf("%ju", p); - // prime_test(p, base); - // } + prime_test_t p = {base, 0}; + prime_test_t q = {base, 0}; pthread_create(&thread_p, NULL, prime_thread_worker, &p); pthread_create(&thread_q, NULL, prime_thread_worker, &q); @@ -139,15 +131,19 @@ int main() { printf("\n"); - unsigned __int128 n = p * q; + unsigned __int128 n = p.prime * q.prime; print_uint128(n); printf("\n"); - unsigned __int128 fi_n = (p - 1) * (q - 1); + unsigned __int128 fi_n = (p.prime - 1) * (q.prime - 1); print_uint128(fi_n); printf("\n"); // 2. kulcsgeneralas + uint64_t e = 0; + do { + e = rand64(); + } while (e <= 1 && e >= fi_n && prime_test(e, base)); return 0; }