Programma che determini la somma dei primi minori di k (in C
Salve gente!
Il prof mi ha assegnato da creare come compito un programma in C,che mi permetta di calcolare la somma di tutti i numeri primi inferiori a k,ma questo programma non mi parte e non ne capisco il motivo!
Ecco il programma:
# include
# include
int main (void) {
int valore1,isPrime,somma,counter,i;
printf("Immetta un numero ");
scanf("%d",&valore1);
isPrime=1;
counter=2;
somma=0;
for (i=1;i
while((isPrime==1)&&(i>counter)) {
isPrime=(i%counter!=0);
counter++;
}
if(isPrime==1) {
somma=somma+i;
}
}
printf("%d",&somma);
system ("PAUSE");
return 0;
}
Grazie mille in anticipo!
Il prof mi ha assegnato da creare come compito un programma in C,che mi permetta di calcolare la somma di tutti i numeri primi inferiori a k,ma questo programma non mi parte e non ne capisco il motivo!
Ecco il programma:
# include
# include
int main (void) {
int valore1,isPrime,somma,counter,i;
printf("Immetta un numero ");
scanf("%d",&valore1);
isPrime=1;
counter=2;
somma=0;
for (i=1;i
isPrime=(i%counter!=0);
counter++;
}
if(isPrime==1) {
somma=somma+i;
}
}
printf("%d",&somma);
system ("PAUSE");
return 0;
}
Grazie mille in anticipo!
Risposte
"Mrhaha":
Salve gente!
Il prof mi ha assegnato da creare come compito un programma in C,che mi permetta di calcolare la somma di tutti i numeri primi inferiori a k,ma questo programma non mi parte e non ne capisco il motivo!
Ecco il programma:
Ci sono alcuni errori nel programma, pero' a me compila e poi gira pure. Perche' dici che non ti gira proprio?
A parte l'algoritmo che e' un po' (molto) naif, ci sono algoritmi molto migliori per calcolare i numeri primi, guarda un po' su wikipedia, vedrai che c'e' parecchio da imparare

# include
# include
int main (void) {
int valore1,isPrime,somma,counter,i;
printf("Immetta un numero ");
scanf("%d",&valore1);
isPrime=1;
counter=2;
somma=0;
for (i=1;iwhile((isPrime==1)&&(i>counter)) {
isPrime=(i%counter!=0);
counter++;
}
A questo punto devi reinizializzare counter, altrimenti per la prossima sweep avra' il valore sbagliato. Tanto vale inizializzarlo appena prima del while.
if(isPrime==1) {
somma=somma+i;
}
Qui devi reinizializzare isPrime.
}
printf("%d",&somma);
system ("PAUSE");
return 0;
}
Edit: Dimenticavo questo: printf("%d",&somma) va sostituito con printf("%d",somma)
bye^2, mr
Grazie!
Salve,
vorrei sapere, con questo algoritmo, quanto tempo impiega la macchina a calcolare i numeri primi, ovviamente mi dia a priori qualche informazione tecnica del calcolatore.
cordiali saluti
vorrei sapere, con questo algoritmo, quanto tempo impiega la macchina a calcolare i numeri primi, ovviamente mi dia a priori qualche informazione tecnica del calcolatore.
cordiali saluti
"oleg":
Salve,
vorrei sapere, con questo algoritmo, quanto tempo impiega la macchina a calcolare i numeri primi, ovviamente mi dia a priori qualche informazione tecnica del calcolatore.
cordiali saluti
Decisamente tanto. Per i primi sotto al milione sul mio PC (Core2 Quad Q6600 2.4 GHz - nessuna parallelizzazione introdotta nel programma) 4 minuti.
Tieni conto che l'algoritmo non si avvicina nemmeno ad essere ottimale. Ci sono diversi algoritmi molto superiori, al massimo ci puoi imparare un paio di cose, dal migliorare questo algoritmo in particolare, non so se ne vale la pena.
bye^2, mr