1.素数筛法
1.创建一个自然数列表2,3,4……n
2.令k=2,把在列表内的所有k的倍数删去
3.然后找出最小的那个比k大的数
重复2.3步骤,直到k^2>=n
2.并行思想
1.交叉数据分解
即把数组元素进行分解,例如:
进程0负责2+k,2+2k,2+3k
进程1负责3+k,3+2k,3+3k
这个很容易确定哪个进程负责哪个下标,但是他的缺点也是显而易见的,最后还是需要规约化和广播操作,另外也容易引起负载不均衡
2.块状数据分解
将数组分成p个连续的块,每个块平均分到数据,如果不能整除,假如余数是a,前a个进程就多分一个。
等以后我有空了把代码补上。