int main(void) { int num,i; printf("input a positive number:" ); scanf("%d",&num); printf("all the primes <= %d:\n",num); for(i=2; i<=num; i++) if(isprimer(i)) printf("%d\t",i ); printf("\n"); return 0; }
int main(){ int* p = mmap(0,4,PROT_READ|PROT_WRITE,MAP_SHARED,0,0); int id = 1; int a,b; while(1){ if(id == 1){ a = 1; b = 5000; } if(id == 2){ a = 5000; b = 10000; } if(fork()){ if(++id>2){ int fd = open("primer.dat", O_RDWR|O_CREAT,0666); if(fd == -1){ printf("open error:%m\n"); exit(-1); } int* q = p; while(q != NULL){ printf("%d\n",*q++); //write(fd,*q++,sizeof(int)); } close(fd); } }else{ int i; int r; int* q = p; for(i = a ; i < b ; i ++){ r = isprimer(i); if(r == 1){ *q++ = i; } } printf("pid:%d task complete!\n",getpid()); exit(0); } } return 0; }