linux c开多线程算质数,C语言判断素数(质数)
时间: 2023-08-02 18:33:38 浏览: 88
可以使用 pthread 库来实现开多线程算质数。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define MAX_THREADS 10
int is_prime(int num) {
if (num <= 1) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
void *find_prime(void *arg) {
int start = *(int *)arg;
for (int i = start; i < start + 1000; i++) {
if (is_prime(i)) {
printf("%d is a prime number.\n", i);
}
}
pthread_exit(NULL);
}
int main() {
pthread_t threads[MAX_THREADS];
int thread_args[MAX_THREADS];
int rc, i;
for (i = 0; i < MAX_THREADS; i++) {
thread_args[i] = i * 1000 + 1;
rc = pthread_create(&threads[i], NULL, find_prime, (void *)&thread_args[i]);
if (rc) {
printf("Error: return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
for (i = 0; i < MAX_THREADS; i++) {
pthread_join(threads[i], NULL);
}
return 0;
}
```
这个程序会开启10个线程来判断1000个数中的质数,每个线程处理1000个数。is_prime()函数用于判断一个数是否为质数。find_prime()函数是线程的执行函数,它接收一个整数参数,表示从哪个数开始判断。在main()函数中,我们循环创建10个线程,并将线程执行函数的参数传递给它们。然后我们等待所有线程都执行完毕,然后退出程序。
阅读全文