附上另一个调用函数后针对一个输入正确代码:
#include "stdafx.h"
#include "mpi.h"
#include "stdio.h"
#include "string.h"
#include "math.h"
int isPrime(int n)
{
int flag=1;
for(int m=2;m<=sqrt(n*1.0);m++)
{
if(n%m==0)
{
flag=0;
break;
}
}
return flag;
}
int main(int argc, char *argv[])
{
int a,mypid,sum=0,local=0,size;
int flag;
double starttime1,endtime1,starttime2,endtime2,t1,t2;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&mypid);
MPI_Comm_size(MPI_COMM_WORLD,&size);
if(mypid==0)
{
scanf_s("%d",&a);
}
MPI_Bcast(&a,1,MPI_INT,0,MPI_COMM_WORLD);
starttime1=MPI_Wtime();
for(int i=mypid*2+1; i<=a; i+=size*2) //每个进程算自己的任务,保存在local中
{
local+=isPrime(i);
}
MPI_Reduce(&local,&sum,1