Linux C开多进程算质数,C语言判断3000000到3000200之间的素数(质数)
时间: 2024-01-22 11:03:46 浏览: 106
判断是否是质数_C语言_质数的判断方法_
5星 · 资源好评率100%
可以使用多进程技术来实现开多进程算质数。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#define MAX_PROCESSES 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(int start, int end) {
for (int i = start; i <= end; i++) {
if (is_prime(i)) {
printf("%d is a prime number.\n", i);
}
}
}
int main() {
pid_t pid;
int i, status;
for (i = 0; i < MAX_PROCESSES; i++) {
pid = fork();
if (pid < 0) {
printf("Error: fork() failed\n");
exit(-1);
} else if (pid == 0) {
// Child process
int start = 3000000 + i * 20 + 1;
int end = start + 19;
find_prime(start, end);
exit(0);
}
}
// Wait for all child processes to finish
for (i = 0; i < MAX_PROCESSES; i++) {
wait(&status);
}
return 0;
}
```
这个程序会开启10个进程来判断3000000到3000200之间的质数。is_prime()函数用于判断一个数是否为质数。find_prime()函数是进程的执行函数,它接收两个整数参数,表示从哪个数开始判断和结束判断。在main()函数中,我们循环创建10个进程,并为每个进程指定不同的起始数值和结束数值,然后在子进程中调用find_prime()函数来进行质数判断。等待所有子进程都执行完毕后,父进程退出程序。
阅读全文