您的位置:首页 > 其它

八仙数(并行计算)

2016-11-14 21:04 148 查看
// openMP.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <time.h>
#include <windows.h>
#include <omp.h>
#define NUM_THREADS 2
int _tmain(int argc, _TCHAR* argv[])
{
omp_set_num_threads(NUM_THREADS);
//并行求八仙花数
clock_t t1=clock();
#pragma omp parallel for
for(int i=10000000;i<100000000;i++)
{
int a,b,c,d,e,f,g,h,t;
a=i%10;
b=(i/10)%10;
c=(i/100)%10;
d=(i/1000)%10;
e=(i/10000)%10;
f=(i/100000)%10;
g=(i/1000000)%10;
h=i/10000000;  t=(a*a*a*a*a*a*a*a)+(b*b*b*b*b*b*b*b)+(c*c*c*c*c*c*c*c)+(d*d*d*d*d*d*d*d)+(e*e*e*e*e*e*e*e)+(f*f*f*f*f*f*f*f)+(g*g*g*g*g*g*g*g)+(h*h*h*h*h*h*h*h);
if(i==t)
{
printf("%d\n",i);
}
}
clock_t t2=clock();
printf("parallel time=%d\n",(t2-t1));//并行时间
//串行求八仙花数
t1=clock();
for(int i=10000000;i<100000000;i++)
{
int a,b,c,d,e,f,g,h,t;
a=i%10;
b=(i/10)%10;
c=(i/100)%10;
d=(i/1000)%10;
e=(i/10000)%10;
f=(i/100000)%10;
g=(i/1000000)%10;
h=i/10000000;
t=(a*a*a*a*a*a*a*a)+(b*b*b*b*b*b*b*b)+(c*c*c*c*c*c*c*c)+(d*d*d*d*d*d*d*d)+(e*e*e*e*e*e*e*e)+(f*f*f*f*f*f*f*f)+(g*g*g*g*g*g*g*g)+(h*h*h*h*h*h*h*h);
if(i==t)
{
printf("%d\n",i);
}
}
t2=clock();
printf("parallel time=%d\n",(t2-t1));//串行时间
system("pause");
return 0;
}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  并行计算