pier_dessi
07-08-2017, 18:40
Ciao a tutti, sono nuovo del linguaggio C e mi sto cimentando in varie mini-sfide per imparare bene questo linguaggio. Il mio codice dovrebbe calcolare i numeri primi inferiori a 2'000'000 e sommarli tra di loro.
Sto provando a farlo col codice sotto, ma ogni volta che lo faccio partire mi dice che ha smesso di funzionare e non riesco minimamente a capire dove sia il problema.
Se qualcuno mi potrebbe illuminare dandomi dritte su dov'è l'errore gliene sarei grato. Grazie in anticipo :D
Codice:
#include <stdio.h>
#include <stdlib.h>
int is_prime(int num){
int *array = NULL;
int i=0;
int q=0;
while(*(array+i)!=NULL || *(array+i)!=0 || *(array+i)!=""){
if (num%(*(array+i))==0){
return 0;
}
else {
if(num==(*(array+i)))
return 0;
}
i++;
}
array = (int*) realloc(array, (++q)*sizeof(int));
array[q-1] = num;
return 1;
}
int main()
{
int a=2;
int somma = 0;
while (a!=2000000){
if(is_prime(a)){
somma+=a;
}
a++;
}
printf("%d",somma);
return 0;
}
Sto provando a farlo col codice sotto, ma ogni volta che lo faccio partire mi dice che ha smesso di funzionare e non riesco minimamente a capire dove sia il problema.
Se qualcuno mi potrebbe illuminare dandomi dritte su dov'è l'errore gliene sarei grato. Grazie in anticipo :D
Codice:
#include <stdio.h>
#include <stdlib.h>
int is_prime(int num){
int *array = NULL;
int i=0;
int q=0;
while(*(array+i)!=NULL || *(array+i)!=0 || *(array+i)!=""){
if (num%(*(array+i))==0){
return 0;
}
else {
if(num==(*(array+i)))
return 0;
}
i++;
}
array = (int*) realloc(array, (++q)*sizeof(int));
array[q-1] = num;
return 1;
}
int main()
{
int a=2;
int somma = 0;
while (a!=2000000){
if(is_prime(a)){
somma+=a;
}
a++;
}
printf("%d",somma);
return 0;
}