OPENMP 实现判断任意两个数之间的素数个数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;//是素数

}


猜你喜欢

转载自blog.csdn.net/laojiaqi/article/details/33319203
今日推荐