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

    [C++] Scomposizione fattori primi aiuto!

    Ho creato un programma che dovrebbe dare come risultato una scomposizione in fattori primi ma quando lo avvio e inserisco il numeo da scomporre si blocca.Per favore aiuto

  2. #2
    ops ho dimenticato il codice

    Eccolo:
    codice:
    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    bool IsPrime(int a);
    
    
    
    int n, a, resto, temp;
    
    int lista[100];
    
    int cont = 0, cont1 = 0;
    
    
    
    
    
    
    int main()
    {
    
        cout << "DIVISORE IN FATTORI PRIMI:\n\n\nScegli il numero da scomporre:>";
    
        cin >> n;
    
        if(IsPrime(n)){
    
            cout << "\nIl numero e' gia' primo.\n\n";
    
    
            cout << "DIVISORE IN FATTORI PRIMI:\n\n\nScegli il numero da scomporre:>";
    
    
        }else{
    
        do{
    
        cont++;
    
        if(IsPrime(cont)){
    
            resto = n % cont;
    
            if(resto == 0){
    
                temp = n / cont;
    
                if(IsPrime(temp)){
    
                    lista[cont1] = temp;
                    n = temp;
                    cont = 0;
                    cont1++;
    
    
                }
    
                if(n == 1){
    
                    a = 1;
    
                }
    
    
            }
    
    
        }
    
        }while(a != 1);
    
        int b = 0;
    
        do{
    
            cout << lista[b] << endl;
            b++;
    
    
    
        }while(b != cont1);
    
    
    
    
        }
    
    
    
    
        system("pause");
    
    
    }
    
    
    
    
    
    
    bool IsPrime(int a){
        if(a < 0) return false;
        if(a == 0) return false;///Controlla i primi 4 numeri
        if(a == 1) return false;
        if(a == 2) return true;
        if(a == 3) return true;
        if(a > 3){
    
            int cont = 1;///variabile contatore e resto della divisione
            int resto;
            do{
                cont++;///aumenta il contatore finchè non è uguale a il numero dato
    
                resto = a % cont;
    
                if(resto == 0 and a != cont) return false;///se il numero da resto 0 oppure è uguale a cont il numero non è primo
            }while(cont != a);
    
            return true; ///il numero esce dal ciclo e da ritrona false
        }
    
    }
    Ultima modifica di MItaly; 08-12-2014 a 16:13

Tag per questa discussione

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.