Riempire vettori con i primi 80 numeri primi

di il
3 risposte

Riempire vettori con i primi 80 numeri primi

Salve a tutti, ho un problema con il mio programma ovvero di immagazzinare in array i primi 80 numeri primi e poi stamparli, solo che al momento di stampa mi da solo il numero 97, cosa sbaglio?
#include <iostream>
using namespace std;

const int n = 80;

void riempiPrimi(int mPrimi[n]);
void stampaPrimi(int mPrimi[n]);

int main()
{
	int mPrimi[n];
	riempiPrimi(mPrimi);
	stampaPrimi(mPrimi);
}

void riempiPrimi(int mPrimi[n])
{
	int sentinella;
	for(int i = 0; i < n; i++)
		for(int j = 3; j < 100; j++)
		{	
			sentinella = 0;
			for(int k = 2; k < j; k++)
					if(j % k == 0)
						sentinella++;
							
			if(sentinella == 0)
				mPrimi[i] = j;
		} 
}

void stampaPrimi(int mPrimi[n])
{
	for (int i = 0; i < n; i++)
		cout << "Numero Primo posizione [" << i << "] == " << mPrimi[i] << endl;
}

3 Risposte

  • Re: Riempire vettori con i primi 80 numeri primi

    I cicli sono impostati male. In particolare il ciclo di i non avanza ad ogni numero trovato.

    Ti consiglio di implementare una funzione che ti dica se un numero passato come argomento è primo o no
  • Re: Riempire vettori con i primi 80 numeri primi

    Sapresti spiegare a parole come dovrebbe funzionare nello specifico l'algoritmo che stai cercando di implementare?
  • Re: Riempire vettori con i primi 80 numeri primi

    In effetti i cicli sono impostati male
    in particolare nno capisco come mai per stampar a video i primi 80 primi tu crei un array di 100 elementi

    la soluzione canonica per questo esercizio sarebbe presentare successivamente un "numero candidato" ad una funzione "test di primalità",
    se il candidato supera il test lo si aggiunge, altrimenti sotto a chi tocca
    fino al raggiungimento di H candidati (con H pari a 80)
    poi ciclare l'array per stamparlo e morta li


    quindi prima idea sarebbe di sviluppare una funzione di test di primalità e poi una funzione di stampa

    però, qui, la particolarità di conservare i primi "numeri primi" trovati permette di semplificare notevolmente il test di primalità

    quindi converrebbe lavorare a rovescio
Devi accedere o registrarti per scrivere nel forum
3 risposte