Oppure

Loading
20/11/09 23:21
salve ragazzi...secondo voi c'è qualche errore nel mio codice :

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;
int primo(int , int);
int main (){
    
    int num, div=2, ris, cont=0;
    
    cout << "inserisci un numero: \n";
    cin >> num;
    
    ris = primo(num, div);
    if (ris==1)//costrutto if condizionale...........
    cout << "il numero e' primo quindi come divisori ammette solo se stesso e l'unita'...!\n";
    else {//inizio else
        while (num!=1){// inizio del ciclo while.....
           
           if (num%div==0){// apertura if.
        num /= div;
        cont++;
       }//fine if
        else {
            if (cont!=0){
            cout<<div<<"^"<<cont<<"*";
        }    
            cont=0;
                  div++;
        }  
      
     } 
     cout<<div<<"^"<<cont;
     //fine while.
}   // fine else............ 
    
    system("pause");
    return 0;
    }   
    
    
    int primo(int num, int div){
        
        while ((num/div)!=1){
            if (num%div==0)
            return 0;
            else if (num%div!=0) 
            div++;
            }
        return 1;
        
        }


21/11/09 9:16
HeDo

beh, a parte che è totalmente inefficiente perchè fai delle cose senza un filo logico:

1) Controlli se è primo
2) Se non è primo lo fattorizzi

Capisci che questa tua logica cade se nel punto 1 per dire che è primo lo fattorizzi?

inoltre per cercare i fattori di un numero primo basta dividerlo per tutti i numeri primi trovati minori della sua radice quadrata.

leggiti a fondo questo: it.wikipedia.org/wiki/…

aaa
21/11/09 9:49
io avevo fatto questo ragionamento:

vedo se è primo, se è primo è inutile scomporlo in altri fattori perchè è divisibile per se stesso e per l'unità...nel caso non è primo entra nell'else e lo scompone...non capisco perchè è sbagliato mi spieghi meglio??:hail:
21/11/09 13:35
HeDo
Postato originariamente da Riuzaki:

io avevo fatto questo ragionamento:

vedo se è primo, se è primo è inutile scomporlo in altri fattori perchè è divisibile per se stesso e per l'unità...nel caso non è primo entra nell'else e lo scompone...non capisco perchè è sbagliato mi spieghi meglio??:hail:


chiarito su msn
aaa
22/11/09 14:27
gigisoft
Salve,

forse andro' un po' :ot: , e forse sembrera' poco opportuno il mio intervento data la semplicita' del problema posto da Riuzaki.
Non voglio essere polemico, pero' in generale mi sembra inopportuno chiudere una discussione con un semplice

chiarito su msn

in quanto la soluzione di un problema posto da un utente potrebbe essere utile anche ad altri, per cui sarebbe opportuno in futuro concludere la discussione postando la soluzione a cui si giunge.
Ciao. :k:

Luigi
Ultima modifica effettuata da gigisoft 22/11/09 14:29
aaa
22/11/09 15:10
HeDo

Riuzaki posterà il programma sistemato :)

anche se non vedo cosa ci sia da postare in "soluzione che si giunge", anche perchè è un programma banale che abbiamo fatto tutti...

aaa
22/11/09 15:33
gigisoft
Postato originariamente da HeDo:


Riuzaki posterà il programma sistemato :)

anche se non vedo cosa ci sia da postare in "soluzione che si giunge", anche perchè è un programma banale che abbiamo fatto tutti...



l'ho precisato che il problema qui' postato era semplice, il mio voleva essere un discorso generale, volevo evitare che la cosa si ripetesse in altri post in cui il problema sia più complesso.

Ciao. :k:

Luigi
aaa
22/11/09 16:10
HeDo
Postato originariamente da gigisoft:

l'ho precisato che il problema qui' postato era semplice, il mio voleva essere un discorso generale, volevo evitare che la cosa si ripetesse in altri post in cui il problema sia più complesso.

Ciao. :k:

Luigi


nei problemi più complessi fidati che sarei il primo a chiedere questa cosa, in questo caso banale è stato a mio avviso superfluo :)
aaa