并行计算—OpenMP—统计素数的个数

//统计素数个数的并行算法和OpenMP并行编程。
#include "stdafx.h"
#include 
#include 
#include 
#include 
#include 
using namespace std;

int isPrime(int lyy_num)   //判断是否为素数
{
	int lyy_flag=1;
	int lyy_s=sqrt(lyy_num*1.0);
	for(int j=2;j<=lyy_s;j++)
        {
            if(lyy_num%j==0)   
            {
                lyy_flag=0;
                break;
            }
        }
	return lyy_flag;
}
int _tmain(int argc, _TCHAR* argv[])
{
	omp_set_num_threads(2);
	int lyy_n,lyy_num=0;
	clock_t t1, t2;
	cin>>lyy_n;
	//并行
	t1=clock();
    #pragma omp parallel for reduction(+:lyy_num)   //reduction方法实现并行
	for(int i=2;i<=lyy_n;i++)
		lyy_num+=isPrime(i);
	t2=clock();
	cout<

运行结果:
并行计算—OpenMP—统计素数的个数_第1张图片

分析:

   加速比计算:219/156=1.404




你可能感兴趣的:(openmp,并行计算,并行计算)