版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/laojiaqi/article/details/33319203
// abc.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
// OpenMp.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "omp.h"
#include <stdio.h>
#include <math.h>
#include <time.h>
int isPrimeNumber(int num);
int _tmain(int argc, _TCHAR* argv[])
{
int a,b,i;
printf("输入1个数\n");
scanf("%d",&b);
int sum=0;
double start=clock();
#pragma omp parallel for num_threads(2) reduction(+:sum)//制定线程个数,并对每个进程的sum进行归约操作
for(i=2;i<=b;i++)
{
int j=isPrimeNumber(i);
sum+=j;
// printf("1个数为%d id=%d\n",sum,omp_get_thread_num());
}
double end=clock();
printf("素数个数为%d 时间为%lf\n",sum,end-start);
}
int isPrimeNumber(int num)
{
int i=2,flag=0;
int upLimit=sqrt((double)num);
for(;i<=upLimit;i++)
{
if(num%i==0)
{
flag=1;
break;
}
}
if(flag==1)
return 0;//不是素数
else
return 1;//是素数
}