Многопоточное приложение - поиск простых чисел в массиве

  • Автор темы jozhik99
  • Дата начала
J

jozhik99

Гость
#1
Помогите, пожалуйста, решить задачку на с++. Попытки сделать не особо увенчались успехом... :KillMe: B)
Дана последовательность натуральных чисел {a0…an–1}. Создать многопоточное приложение для поиска всех ai, являющихся простыми числами. Количество потоков является входным параметром программы, потоки проводят вычисления независимо друг от друга, количество символов в строке может быть не кратно количеству потоков

Код:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
const int n = 4;
int a[100];
DWORD WINAPI ThreadFunc(PVOID pvParam)
{
int num,sum = 0,i;
int b[k];
num = 25*(*((int *)pvParam));
for(i=num;i<num+25;i++)
for (int j=2; j<=10; ++j)
{
if (!(j>3 && (j%2==0 || j%3==0)))
cout << j << "\n";
}
for (int i=10; i<=100; ++i)
{
if (!(k%2==0 || k%3==0 || k%5==0 || k%7==0))
cout << k << "\n";
}
a[i] == j&&k;
sum =a[i];


*(int*)pvParam = sum;
DWORD dwResult = num;
return dwResult;
}
int main(int argc, char** argv)
{
int x[n];
int i,rez = 0;
DWORD dwThreadId[n],dw,dwResult[n];
HANDLE hThread[n];
for (i=0;i<100;i++) a[i] = i;
//создание n дочерних потоков
for (i=0;i<n;i++)
{
x[i] = i;
hThread[i] = CreateThread(NULL,0,ThreadFunc,(PVOID)&x[i], 0, &dwThreadId[i]);
if(!hThread) printf("main process: thread %d not execute!",i);
}
// ожидание завершения n потоков
dw = WaitForMultipleObjects(n,hThread,TRUE,INFINITE);
// получение значений, переданных потоком в return
for (i=0;i<n;i++)
{
GetExitCodeThread(hThread[i],&dwResult[i]);
printf("%d\n",(int)dwResult[i]);
}
for(i=0;i<n;i++) rez+=x[i];
printf("\n Prostye chisla = %d",rez);
getch();
return 0;
}