Hello everyone, I am learning C ++ for Data Structure and have some error in the code that is creating an infinite loop.
#include <stdio.h>
int fatores(int a[], int n, int *x) {
int primo = 2; // primeiro primo
int qtdzero = 0; // incrementa sempre que o resto do número der zero.
int divisoes = n; // só recebe do parâmetro
int count = 0; // contador pra pular o endereço do vetor a
while (divisoes > 1) { // vai sair do loop quando divisão chegar a 1
bool sair = true;
for (int i = 1 ; i <= primo ; i++) {
if (primo % i == 0) { //teste se é primo ou não
qtdzero++;
}
}
if (qtdzero == 2) { //se for primo entra aqui.
while (sair) {
if ((divisoes % primo == 0) && (divisoes >= primo)) {
a[count++] = primo; //armazena o primo
divisoes = divisoes / primo;
(*x)++;
} else {
sair = false;
primo++;
}
}
} else { // se falso, passa pro próximo número e faz o mesmo teste
primo++;
qtdzero = 0;
}
}
return ((*x > 10) ? 1 : 0); // retorna quantidade de decomposições
}
int main() {
int *a = new int[20]; //guarda os números primos
int *x = new int; // guarda a quantidade de vezes que foi decomposto
int res = fatores(a, 24, x);
printf("%i\n", res); // printa o retorno da função fatores
for (int i = 0; i < 20 ; i++) // exibe os valores decompostos
printf("%i\n", a[i]);
}