Stampa dei numeri primi

di il
22 risposte

22 Risposte - Pagina 2

  • Re: Stampa dei numeri primi

    int main()
    {
       int n,i;
    
    
       do {
        printf("\nInserire un numero intero che non superi il valore di 200\n\n\t");
        scanf("%d",&n);
        printf("\n");
        }  while(n>200);
    
    
    
     for (i=0;i<=n;i++)
     {
         if ((i%2)!=0&&(i%3)!=0&&(i%5)!=0&&(i%7)!=0);
            else if (i==2&&i==3&&i==5&&i==7)
         printf(" ->%d ",i);
     }
    
    
    
    
    
    
    
     return 0;
    }
    Dovrebbe funzionare e invece non va proprio...
  • Re: Stampa dei numeri primi

    Ciao, hai messo un else if dentro allo stesso if... La struttura dovrà essere
    
    if(condizione) {
        ...
        istruzioni
        ...
    }
    else if(altraCondizione) {
        ...
        istruzioni
        ...
    }
    
  • Re: Stampa dei numeri primi

    Per semplificarlo, in un unico if, puoi fare anche così:

    if( ( (i%2 != 0) && (i%3 != 0) && (i%5 != 0) && (i%7 != 0) ) || i == 2 || i == 3 || i == 5 || i == 7)

    semplificarlo per modo di dire...
  • Re: Stampa dei numeri primi

    int main()
    {
       int n,i;
    
    
       do {
        printf("\nInserire un numero intero che non superi il valore di 200\n\n\t");
        scanf("%d",&n);
        printf("\n");
        }  while(n>200);
    
    
    
     for (i=2;i<=n;i++)
     {
         if (((i%2)!=0)&&((i%3)!=0)&&((i%5)!=0)&&((i%7)!=0&&((i%11)!=0)||i==2||i==3||i==5||i==7||i==11))
    
         printf(" ->%d \t",i);
     }
    
    
    
    
    
    
    
     return 0;
    }
    allora il problema è questo: i quadrati dei numeri primi me li stampa (169,196.....)
  • Re: Stampa dei numeri primi

    Infatti quell' if vale solo per n < 121, cioè il quadrato di 11, che sarebbe il primo successivo a 7.

    Quindi, il programma deve capire questa cosa, prima non l'ho ribadito perché il tuo programma doveva funzionare solo con numeri inferiori a 200. Quindi basta arrivare al massimo primo, il cui quadrato non superi 200(cioè 13); controlla bene, 196 non lo stampa perché è pari.
  • Re: Stampa dei numeri primi

    Vero... un'ultima cosa... se ora volessi farlo però fino a mille cosa dovrei aggiungere?
  • Re: Stampa dei numeri primi

    Dovresti arrivare nelle condizione al massimo numero primo il cui quadrato sia inferiore a mille(Questa regola è generale).
    Cioè 31.
  • Re: Stampa dei numeri primi

    Grazie mille ha funzionato!!
Devi accedere o registrarti per scrivere nel forum
22 risposte