Pessoal, eu estava codando um programa para determinar numeros primos, e calcular os fatores de um numero. Para isso eu forneço um intervalo de 0, até um numero, e meu programa fatora os numeros desse intervalo. Porém quando eu defini o intervalo de 0 a valores maiores que 200 ele omitia o fator 2, até mesmo para os valores menores que 100 que ele da certo se eu definir o intervalo de 0 a 100. Aqui esta o codigo:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 100
int main (void) {
int z=, i=, x=, p=, k=1;
int fatores [MAX];
int primo [MAX];
int j, varteste, resto;
//Calculo de numeros primos
for (i=; i<MAX; i++)
primo = ;
for (i=; i<MAX; i++){
for (j=2; j<i; j++) {
resto = i%j; //Testando a divisibilidade do numero, dividindo por todos os
varteste = resto * resto; //numeros anteriores a ele
if (resto == )
break;
}
if (varteste != && i != 1) {
primo = i;
}
}
//Fatorando os numeros do intervalo 0<x<MAX
for (x=1; x<MAX; x++){
k=x;
for (p=; p<MAX; p++){
fatores [p] = ;
}
for (i=, p=; i<MAX; i++){
if (primo != && primo != 1) {
do {
z = k % primo ;
if (z==){ //Testando a divisibilidade por todos o numeros primos
fatores [p] = primo ; //contido no vetor primo, caso z=0, o numero é alocado
p++; //no vetor fatores
k = k/primo;
}
} while (z==);
}
}
printf ("A fatoraçao de %d é: 1 ", x); //Saida, print dos valores do vetor fatores
for (p=; p<MAX; p++)
if(fatores [p] != )
printf (", %d ", fatores [p]);
printf ("\n");
}
printf ("\n");
return ;
}