Finish this code for a multi-threaded program searching for the
prime numbers
Requirements:
+Allow 5 threads to concurrently search the prime numbers between 1
- 50,000
+Each thread only needs to analyze 10,000 numbers
+Print the all prime numbers on the display with the main
thread
Is the run-time of a multi-threaded program faster than a
single-threaded program?
#include
#include
// Compute successive prime numbers (very inef ciently).
// Return the Nth prime number, where N is the value pointed to by
*ARG.
void *compute_prime(void *arg)
{
int candidate = 2;
int n = *((int *)arg);
while (1)
{
int factor, is_prime = 1;
/* Test primality by successive division. */
for (factor = 2; factor < candidate; ++factor)
if (candidate % factor == 0)
{
is_prime = 0;
break;
}
/* Is this the prime number we’re looking for? */
if (is_prime)
{
if (--n == 0)
/* Return the desired prime number as the thread return value.
*/
return (void *)candidate;
}
++candidate;
}
return NULL;
}
int main()
{
pthread_t thread;
int which_prime = 5133, prime,n;
n = which_prime;
/* Start the computing thread, up to the 5,133th prime number.
*/
pthread_create(&thread, NULL, &compute_prime,
&which_prime);
/* Do some other work here... */
/* Wait for the prime number thread to complete, and get the
result. */
pthread_join(thread, (void *)&prime);
/*Print the 5,133th prime it computed. */
printf("The % dth prime number is % d.\n", n, prime);
return 0;
}
Finish this code for a multi-threaded program searching for the prime numbers Requirements: +Allow 5 threads to concurre
-
- Site Admin
- Posts: 899603
- Joined: Mon Aug 02, 2021 8:13 am