Problema con il Do...while

di il
5 risposte

Problema con il Do...while

Buonasera a tutti, devo controllare se un numero dato in input è primo. Non riesco proprio a capire perché non esca dal ciclo do....while.
Il codice è il seguente:

	int numero;
	float resto=0;
	int divisore=2;	
	bool out=true;
	cout<<"Inserisci il numero da controllare \n";
	cin>>numero;
	
	do{	

		resto=numero%divisore;
		cout<<numero<<" % "<<divisore<<" = "<<resto<<endl;
		if(resto==0){
			out=false;
		}
		divisore++;	

	}while(out==true || divisore<numero);
	
	if(out==true){
		cout<<"Il numero e' primo";
	}
	if(out==false){
		cout<<"Il numero non e' primo";
	}

Come sappiamo un numero primo è quel numero divisibile solo per 1 o se stesso.
In teoria appena il resto sarà 0 oppure il divisore sarà numero-1 dovrebbe uscire dal ciclo. La mia domanda è perché non esce dal ciclo?

5 Risposte

  • Re: Problema con il Do...while

    Cominciamo a dire che ti basta provare fino alla radice quadrata, compresa, del numero, e non é necessario provare oltre (la cosa può velocizzare molto calcoli su numeri alti).

    Inoltre resto deve essere un intero.
  • Re: Problema con il Do...while

    Metodo un po' semplice per un test di premialità

    Però dovrebbe andare

    Lento ma andare

    Metti int il resto
    Temo che il test == su float non sia adatto
  • Re: Problema con il Do...while

    And non Or

    (out == true && divisore < numero);

    rifletti ...


    P.S. E usa un int per il resto non un float
  • Re: Problema con il Do...while

    [CODE] bool flag; ... if (flag == true) ... if (flag == false) ... Si può migliorare, direi
  • Re: Problema con il Do...while

    Grazie a tutti dei consigli ma ho risolto cambiando totalmente l'algoritmo.
Devi accedere o registrarti per scrivere nel forum
5 risposte