Programma c++ ,numeri

di il
6 risposte

Programma c++ ,numeri

Buonasera, dovrei fare un programma in c++ che dato un numero, mi dice se è primo o meno, utilizzando un ciclo while.
ho scritto questo codice ma mi dà sempre numeri primi, qulacuno può darmi una mano?

Ho fatto questo ragionamento:
"Un numero primo non ha divisori tranne 1 e se stesso, allora, io divido il numero per tutti i divisori possibili, da 2, al numero prima del numero stesso, e se mi dà resto 1 il numero è primo, altrimenti è composto"
#include <iostream> 
using namespace std; 
int main(){

int n;
int div=2;
int r=1;
cin>>n;
while ((div<n)&(r=1)){
  n%div==r;
  div=div +1;
}

if (r!=0){
cout<<"primo";
}

else{
cout<<"composto";
}

return 0;
}

6 Risposte

  • Re: Programma c++ ,numeri

    Ma che volevi scrivere in queste linee

    while ((div<n)|(r=1)){
    n%div==r;

    controllale bene
  • Re: Programma c++ ,numeri

    Ho sbagliato a copiare i codice, al posto dell' OR c'è l' AND.(ho aggiornato il codice sopra)

    while ((div<n)&(r=1)){
    n%div==r;
    div=div +1;
    }

    con questo voglio scrivere che se il divisore è minore del numero, ed il resto è 1, dividi per il divisore e segna il resto in r, dopodiché aggiungi 1 al divisore.

    solo che come output mi dà sempre primo, anche se metto ad esempio 4, che è un numero composto.
  • Re: Programma c++ ,numeri

    Rieti, controlla la sintassi delle due righe
  • Re: Programma c++ ,numeri

    Allora, ho pensato a questo..
    Se un numero è pari, a meno che non sia 2, è composto.
    se invece è dispari, a meno che dividendolo per 3 o 5 o 7 dia resto 0, è primo.
    (matematicamente è cosi, e sto cercando di scriverlo)
    Ho scritto questo codice, ma mi dà sempre numero primo.
    te vedi qualche errore? non capisco..
    #include <iostream> 
    using namespace std; 
    int main(){
    
    int n;
    int div=3;
    int r=1;
    cin>>n;
    
    if  (n%2!=0);
    {
    while ((div<=7)|(r=0)){
      r==n&div;
      div= div +2;
    }
    }
    
    if ((r!=0)|(n=2)){
    cout<<"primo";
    }
    
    else{
    	if((n%2==0)&(n!=2)) {
    	
    cout<<"composto";
    }
    }
    return 0;
    }
  • Re: Programma c++ ,numeri

    In quelle righe che ti ho detto rifletti sull'uso di = e ==
  • Re: Programma c++ ,numeri

    Oddio, ho fatto un po di confusione con gli "=" di assegnamento e "==" di controllo.
    comunque credo di esserci quasi, in questo codice, i numeri pari me li dà composti, ed il 2 me lo dà primo.
    Fin qui ok, solamente che a tutti i numeri dispari me li dà primi, non capisco il motivo, te vedi qualcosa di sbagliato?

    (il ragionamento è questo: Se un numero è pari, a meno che non sia 2, è composto.
    se invece è dispari, a meno che dividendolo per 3 o 5 o 7 dia resto 0, è primo.
    )
    #include <iostream> 
    using namespace std; 
    int main(){
    
    int n;
    int div=3;
    int r=1;
    cin>>n;
    
    if((n%2==0)&(n!=2)) {
    r=0;
    }
    
    
    if  (n%2!=0){
    	
      while ((div<=7)|(r==0)){
      r= (n%div);
      div= (div +2);
    }
    }
    
    if ((r!=0)|(n==2)){
    cout<<"primo";
    }
    
    else{
    	if((n%2==0)&(n!=2)) {
    	
    cout<<"composto";
    }
    }
    return 0;
    }
Devi accedere o registrarti per scrivere nel forum
6 risposte