Ciao, non riesco a concludere questo "semplice" (non per me   ) codice.
// Ricerca di numeri primi in una serie
#include <iostream>
using namespace std;
int main ()
{	int N;
	cout << "Inserisci N ed io ti diro' quali dei numeri compresi tra 1 ed N sono primi." << endl;
	cin >> N;
	int * a = new int [N];
	for (int i = 0; i < N; i++)
	{
		a [i] = i + 1;
		if (???)
		cout << a [i] << " non e' primo. " << endl;
		else
		cout << a [i] << " e' primo. " << endl;
		
	}
return 0;
}
Se io dovessi mettere N = 9, l'array sarebbe:
1 2 3 4 5 6 7 8 9 
Dovrebbe stampare:
1 è primo,
2 è primo,
3 è primo,
4 non è primo,
5 è primo,
6 non è primo,
7 è primo,
8 non è primo,
9 non è primo.
Stavo pensando di far qualcosa del tipo:
ad eccezione di 1, tutti i numeri devono essere divisi per tutti i propri "numeri minori uguali" fino ad arrivare ad 1 e se il cont risulta maggiore di 2 (un numero è primo se divisibile per 1 per sé stesso), il numero non è primo... ma non funziona)
Per essere primo deve dare resto 0 solo alla divisione fra sé stesso e 1 ma non so come scriverlo nel parametro. 
// Ricerca di numeri primi in una serie
#include <iostream>
using namespace std;
int main ()
{	int N;
	int cont = 0;
	cout << "Inserisci N ed io ti diro' quali dei numeri compresi tra 1 ed N sono primi." << endl;
	cin >> N;
	int * a = new int [N];
	int * b = new int [N];
	for (int i = 0; i < N; i++)
	{
		a [i] = i + 1;
		for (int i = 1; i <= N; i++)
		{
			b [i] = i;
			if (a [i] % b [i] != 0)
				cont++;
		}
		if (cont == 2)
		cout << a[i] << " e' primo" << endl;
	}
	return 0;
}