Primtalsfaktorering
Hej Eksperter!Jeg har lavet følgende script til at opløse et tal til primfaktorer. Det vil bare ikke som jeg vil. Jeg ved sku ikke lige, hvad der er galt. Jeg lavede det først i PHP (hvor det virker fint! Så ville jeg lave det om til C/C++, da det går hurtigere, men det stinker jeg til!
void main()
{
clrscr();
cout << "Velkommen til PrimFaktorsFind. Lavet af Mikkel Meyer Andersen d. 1/9-2002.\n" << endl;
getch();
clrscr();
int antal_primes = 0;
int N = 143;
int start_tal = 0;
int slut_tal = N;
int almindeligdivision_i;
float almindeligdivision_f;
int fejl;
int min_div;
int max_div;
int primes[20000];
for (start_tal; start_tal <= slut_tal; start_tal ++)
{
almindeligdivision_i = (start_tal / 2);
almindeligdivision_f = (start_tal / 2);
if (almindeligdivision_i == almindeligdivision_f)
{
fejl = 1;
}
else
{
min_div = 2;
max_div = (start_tal / 2) + 1;
for (min_div; min_div < max_div; min_div ++)
{
almindeligdivision_i = (start_tal / min_div);
almindeligdivision_f = (start_tal / min_div);
if (almindeligdivision_i == almindeligdivision_f)
{
fejl = 1;
break;
}
}
}
if (!fejl)
{
primes[antal_primes] = start_tal;
antal_primes ++;
}
fejl = NULL;
}
//$N er blevet sat i toppen!
int N_kvad = sqrt(N);
int p;
int p_max = N_kvad;
int p_array[20000];
int p_array_no = 0;
int q;
int q_min = N_kvad;
int q_array[20000];
int q_array_no = 0;
for(int index = 0; index <= N; index++)
{
if (primes[index] <= p_max)
{
p_array[p_array_no] = primes[index];
p_array_no++;
}
if (primes[index] >= q_min)
{
q_array[q_array_no] = primes[index];
q_array_no++;
}
}
for (int p_i = 0; p_i <= p_array_no; p_i++)
{
for (int q_i = 0; q_i <= q_array_no; q_i++)
{
int p_q = p_array[p_i] * q_array[q_i];
if (p_q == N)
{
p = p_array[p_i];
q = q_array[q_i];
}
}
}
if (!p || !q)
cout << "Tallet er forkert!";
else
{
cout << "N = " << N << endl;
cout << "p = " << p << endl;
cout << "q = " << q << endl;
}
getch();
}
/mikl.dk