Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [C++] Numeri primi

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965

    [C++] Numeri primi

    mi dà eccezione questo tratto di codice per calcolare numeri primi

    codice:
    	unsigned int max,seg,nprimo;
            max = 100;
    	cout << "\n Ecco a te i numeri primi da 0 a " << max << endl;
    	for(nprimo=0;nprimo<max;nprimo++){
    		for(seg=0;seg<nprimo-1;seg++){
    			if(nprimo%seg==0){
    				break;
    			}
    			else{
    				cout << nprimo << endl;
    				break;
    			}
    		}
    	}
    dove sbaglio ???
    c'è caso che anche l'algoritmo sia errato...

  2. #2

    Re: [C++] Numeri primi

    Originariamente inviato da keratox
    mi dà eccezione questo tratto di codice per calcolare numeri primi

    codice:
    	unsigned int max,seg,nprimo;
            max = 100;
    	cout << "\n Ecco a te i numeri primi da 0 a " << max << endl;
    	for(nprimo=0;nprimo<max;nprimo++){
    		for(seg=0;seg<nprimo-1;seg++){
    			if(nprimo%seg==0){
    				break;
    			}
    			else{
    				cout << nprimo << endl;
    				break;
    			}
    		}
    	}

    dove sbaglio ???
    c'è caso che anche l'algoritmo sia errato...
    che errore ti dà di preciso?su che linea?

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    cioe'... non dà errore

    semplicemente quando arrivo a quel punto del programma mi ritorna un'eccezione

    mi ricordo solo le parole 'unknown software'

  4. #4
    Originariamente inviato da keratox
    cioe'... non dà errore

    semplicemente quando arrivo a quel punto del programma mi ritorna un'eccezione

    mi ricordo solo le parole 'unknown software'
    che compilatore usi???ambiente??

    In quale punto ti solleva l'eccezione?

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  5. #5
    In ogni caso te ne ho scritto uno funzionante....ciao
    codice:
    #include<stdio.h>
    
    void stampa_primi(int );
    bool primo(int );
    
    
    int main(){
    int limite;
    printf("\nInserisci fino a che numero vuoi generare numeri primi....\n\n");
    scanf("%d",&limite);
    stampa_primi(limite);
    getchar();
    return 0;
    } 
    
    void stampa_primi(int limite){
    int i;
    
    for(i=0;i<limite;i++)
     if ( primo(i) ) printf("%d è numero primo\n",i);
    
    }
    
    bool primo(int n){ 
        bool primo=true;
        int i=2;
    
        while ((primo == true) && (i<n)){ 
        	if(n%i ==0 ) primo=false; 
    	i++; 
        }
    return primo; 
    }
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  6. #6
    codice:
    bool NumeroPrimo(long n)
    {
    	int i     =0;
    	for (i=(n-1); i>1; i--){
    		if ((n % i)==0) return false;
    	}
    	return true;
    }
    prova questo

  7. #7
    Originariamente inviato da nordavind
    codice:
    bool NumeroPrimo(long n)
    {
    	int i     =0;
    	for (i=(n-1); i>1; i--){
    		if ((n % i)==0) return false;
    	}
    	return true;
    }
    prova questo
    fà paraticamente la stesa cosa del mio


    ps solo che parte alla rovescia nell'iterazione del for
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Si funziona!!
    Grazie a tutti!

    sapete mica perche' il mio non andava ???
    avete trovato errori sintattici ???

  9. #9
    codice:
    bool NumeroPrimo(long n)
    {
    	int i     =0;
    	for (i=(n-1); i>1; i--){
    		if ((n % i)==0) return false;
    	}
    	return true;
    }
    Esiste un'ottimizzazione basata sul Lemma di Fibonacci per la quale invece che partire da n-1 si può partire da parte intera inferiore della radice di n.Il lemma infatti assicura che se il più piccolo degli eventuali fattori di n (se non è primo) è più piccolo della parte intera inferiore della radice di n appunto.
    Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  10. #10
    Esiste un'ottimizzazione basata sul Lemma di Fibonacci per la quale invece che partire da n-1 si può partire da parte intera inferiore della radice di n.Il lemma infatti assicura che se il più piccolo degli eventuali fattori di n (se non è primo) è più piccolo della parte intera inferiore della radice di n appunto.
    Ciao
    Quel se non c'entra nulla.

    L'ottimizzazione suddetta consente di risparmiare un bel po di iterazioni al crescere di n.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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.