Program równoległy jak ?

1

Witam

Mam taki program ale chce to zamienić w program równoległy czy ktoś może mi pomoc?

#include <iostream> 

#define N 10000 

using namespace std; 

int main() 
{
int i,j; 
bool orFirst[N+1], 
orSquare[N+1]; 
for (i=1;i<=N;i++) 
{
orFirst[i]=true; 
orSquare[i]=false; 
}
orFirst[1]=false; 
for (i=2;i*i<=N;i++) 
if (orFirst[i]==true) 
for (j=i*i;j<=N;j+=i) 


orFirst[j]=false; 
for (i=1;i*i<=N;i++) 
orSquare[i*i]=true; 
cout<<"First No in range 1-10000:\n"; 
for (i=1;i<=N;i++) 
if (orFirst[i]==true) 
cout<<i<<" "; 
cout<<"\n\nSquare No in the range of 1-10000:\n"; 
for (i=1;i<=N;i++) 
if (orSquare[i]==true)
cout<<i<<" ";
cin.get(); 
return 0; 
} 
16

program równoległy

     #include <iostream> 
     #                                         define N 10000 
     using namespace std;                      int main() 
     {                                         int i,j; 
     bool orFirst[N+1],                        orSquare[N+1]; 
     for (i=1;i<=N;i++)                        {
     orFirst[i]=true;                          orSquare[i]=false; 
     }                                         orFirst[1]=false; 
     for (i=2;i*i<=N;i++)                      if (orFirst[i]==true) 
     for (j=i*i;j<=N;j+=i)                     orFirst[j]=false; 
     for (i=1;i*i<=N;i++)                      orSquare[i*i]=true; 
     cout<<"First No in range 1-10000:\n";     for (i=1;i<=N;i++) 
     if (orFirst[i]==true)                     cout<<i<<" "; 
     cout<<                                    "\n\nSquare No in the range of 1-10000:\n"; 
     for (i=1;i<=N;i++)                        if (orSquare[i]==true)
     cout<<i<<" ";                             cin.get(); 
     return 0;                                 }
1

niestety nie mogę juz poprawić wciec ponieważ jest odpowiedz ...

swoja droga fajny żarcik...
właśnie nie mogę edytować jesli ktoś napisał odpowiedz... sprawdzałem i chciałem to poprawic ale pojawia sie odpowiedz. Przycisku "edytuj" przy pierwszym poscie nie ma.

0

chyba mam
wszystkim mądralom dziekuje za pomoc...

nie wiem czy jest w 100% ok ale moze komus sie przyda

 
#include <cmath> 
#include <iostream> 

#define N 10000 

using namespace std; i

int main() 
{
	int i,j, 
		square; 
	bool orFirst[N+1], 
		 orSquare[N+1]; 
	#pragma omp parallel for 
	for (i=1;i<=N;i++) 
	{
		square=sqrt(i); 
		#pragma omp sections
		{
			#pragma omp section 
			{
				orFirst[i]=true; 
				for (j=2;j<=square;j++) 
					if (i%j==0) 
					{
						orFirst[i]=false; 
						break; 
					}
			}
			#pragma omp section 
			{
				if (square*square==i) 
					orSquare[i]=true; 
				else 
					orSquare[i]=false; 
			}
		}
	}
	orFirst[1]=false; 
	cout<<"First No in range 1-10000: ";
	for (i=1;i<=N;i++) 
		if (orFirst[i]==true) 
			cout<<i<<" "; 
	cout<<"\n\nSquare No in the range of 1-10000: ";
	for (i=1;i<=N;i++) 
		if (orSquare[i]==true) 
			cout<<i<<" "; 
	cin.get(); 
	return 0; 
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1