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
}
}