Buonasera a tutti!
Scusate per l'ora ma ho un esercizio da risolvere e siccome sono malato mi ci sono messo ora
L'esercizio chiede questo: Definire una funzione che, dato un intero n, conta quanti sono i numeri primi minori o uguali a n, servendosi di un' ulteriore funzione che controlli la primalità del numero.
Io nella mia stolta ignoranza ho implementato questa soluzione(riveltasi errata) che però mi restituisce che nell'array ci sono N numeri primi
Sapreste dirmi dove è che sbaglio per piacere??
Grazie in anticipo.
Posto il codice per chiarezza:
codice:
//Funzioni che determinano la presenza di numeri primi un array. Se ci sono valuta quelli minori di n(dimensione)
#include <iostream>
using namespace std;
char if_primo (int a[], int n){
int k = 2;
for (int i = 0; i < n; i++,k++){
if (a[i] % k == 0)
return 'n'; // Se trova divisori il numero non è primo e restituisce n(no)
}
return 'y'; // Se non li trova il numero è primo e restituisce y(yes)
}
int conta_primi (int a[], int n){
int conta = 0;
for (int i = 0; i < n; i++){
if (if_primo(a,n) == 'y' && a[i] < n)
conta++;
}
return conta;
}
int main () {
cout << "Inserisci dimensione array: ";
int n;
cin >> n;
int a[n];
cout << "Ora inserisci gli elementi dell'array" << endl;
for (int i = 0; i < n; i++){
cin >> a[i];
}
char esiste = if_primo(a,n);
cout << "Ci sono primi nella sequenza che hai inserito?? " << esiste << endl;
if (esiste == 'y'){
cout << "Ci sono esattamente: " << conta_primi(a,n) << " primi nell'array" << endl;
}
else if (esiste == 'n'){
cout << "Primi nell'array: " << conta_primi(a,n) << endl;
}
system("PAUSE");
return 0;
}
(Scusate ma sono sempre quello che non conosce i puntatori quindi per piacere se potete solo aiuti che non li prevedano nel codice grazie mille
)