Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c]programma che trova i numeri primi

    salve a tutti,
    ho scritto questo codice, che al compilatore va benissimo:
    codice:
    #define Bool int
    #define False 0
    #define True !False
    #include <stdio.h>
    #include <stdlib.h>
    //funzione che ritorna 1 se il numero dato non è divisibile per alcun primo trovato sin ora
    Bool isPrimo(long x, long primi[], long nPrimi){
         int tot=0;
         int i;
         for (i=1; i=nPrimi; i++){
             if(x%primi[i]==0){
               tot++;                 
                 }
             }
         if (tot==0){
          return True;
          }
         else{
              return False;
                        }
         }
         
    int main(int argc, char *argv[])
    { 
      long NoPrimi=0;
      long PrimiList[1000];
      long i;
      for(i=0; i=256; i++){
               Bool boolPrimo=isPrimo(i, PrimiList, NoPrimi);
               if(boolPrimo==True){
                            printf("%d, ", &i);
                            PrimiList[NoPrimi]=i;
                            NoPrimi++;                        
                             }
               }
     
      system("PAUSE>nul");	
      return 0;
    }
    poi però, quando lo eseguo mi stampa un numero pari (circa 22000) e poi windows mi avverte che il programma non risponde!
    qualcuno sa dove sbaglio?
    i Metallica NON sono un genere
    musicale

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    nel for i=256 dovrebbe essere sbagliato.
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Qui ci sono 2 errori sicuri, poi non ho guardato...
    codice:
    for (i=1; i=nPrimi; i++)
    codice:
    for(i=0; i=256; i++)
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Diciamo anche che è di una inefficienza pazzesca.
    Almeno nel ciclo for potresti saltare i numeri pari

    Se proprio devi scrivere una funzione che ti trova i numeri primi usa almeno il
    Crivello di Eratostene (http://it.wikipedia.org/wiki/Crivello_di_Eratostene)
    che è altrettanto facile da implementare, ma almeno è efficiente.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Perché stampi l'indirizzo di i e non il suo valore?

    printf("%d, ", &i);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    ho controllato e corretto gli errori, ma il compilatore non dava alcun segnale all'avvio del programma invece l'outpu è sempre lo stesso qualunque parametro io passi al ciclo for
    i Metallica NON sono un genere
    musicale

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da bock'n'roll
    corretto gli errori
    E adesso il codice qual è ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.