Programma che determini la somma dei primi minori di k (in C

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:


# 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!

Risposte
yoshiharu
"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;i while((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

Mrhaha
Grazie!

Sk_Anonymous
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

yoshiharu
"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

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.