我必须按线程计算范围之间的素数。 示例程序运行
./myProg 100 250 4 //4 number of threads and 100 to 250 is range
我做了基本的部分,下一步是什么?
#include<iostream>
#include<pthread.h>
#include<string>
#include<cstdlib>
using namespace std;
void* prime(void*);//calculate prime number for this thread between range x to y ???
int main(int argc, char** argv){
if(argc!=4){
cout<<"Must provide exactly 3 arguments"<<endl;
exit(EXIT_FAILURE);
}
pthread_t threads[(*argv[3])];
cout<<"Prime numbers will be calculated by "<<(*argv[3])<<" threads"<<endl;
return 0;
}
答案 0 :(得分:0)
你可以通过对每个范围内的每个值使用Rabin-Miller素性测试来做到这一点。 Rabbin-Miller算法不依赖于先前值的素数计算,因此所有线程都可以隔离运行而不需要它们之间的任何通信。
请参阅: