在linux下 创建独立线程来输出小于或等于用户输入数的所有素数
#include <pthread.h>
#include <stdio.h>
#define MAX_SIZE 256
int primes[MAX_SIZE];
void *runner(void *param);
int main(int argc, char *argv[])
{
int i;
pthread_t tid;
pthread_attr_t attr;
if (argc != 2) {
fprintf(stderr,"usage: a.out <integer value>\n");
return -1;
}
if (atoi(argv[1]) < 2) {
fprintf(stderr,"Argument %d must be >= 2 \n",atoi(argv[1]));
return -1;
}
pthread_attr_init(&attr);
pthread_create(&tid,&attr,runner,argv[1]);
pthread_join(tid,NULL);
for (i = 1; i <= atoi(argv[1]); i++)
if (primes[i] > 0)
printf("%d\n", i);
}
void *runner(void *param)
{
int i, j;
int upper = atoi(param);
primes[1] = 0;
for (i = 2; i <= upper; i++)
primes[i] = 1;
for (i = 2; i <= upper; i++)
if(primes[i])
{
for (j = i; j*i <= upper; j++)
{
primes[i*j] = 0;
}
}
pthread_exit(0);
}