Witam, mam problem z rozkładem silni na czynniki pierwsze. Na początek tworzę tablicę i zliczam licznik liczb pierwszych, następnie tworzę tablicę o tym rozmiarze i zapisuje w niej te liczby. Później tworzę kolejną tablicę o tym samym rozmiarze i przypisuje jej wartość zero dla każdego elementu. Chciałem zrobić tak, żeby np. dla 5!=543*2, każdy z tych elementów rozłożyć na czynniki pierwsze, i jeśli się rozkłada to Tablicę C zwiększyć o 1, i tak rozłożyć wszystkie liczby. No tylko gdzieś mój pomysł nie jest dobry, i tu przychodzę z pytaniem gdzie?
#include <iostream>
using namespace std;
int main()
{
unsigned n;
cout<< "Podaj liczbe naturalna n: ";
cin>>n;
int licznik=0;
bool *TAB=new bool[n+1];
for(int i=2; i<n+1; i++)
TAB[i]=0;
for (int i=2; i*i<=n; i++)
{
if(!TAB[i])
for (int j = i*i ; j<n+1; j+=i)
TAB[j] = 1;
}
for (int i=2; i<n+1; i++)
if(!TAB[i])
licznik++;
int *B=new int [licznik-1];
int j=0;
for (int i=2; i<n+1; i++)
while(!TAB[i])
{
B[j]=i;
j++;
break;
}
delete [] TAB;
int *C=new int [licznik-1];
for(int i=0; i<=licznik-1; i++)
C[i]=0;
for(int i=n; i>1; i++)
{
while(n%B[j]==0 && j<=licznik-1)
{
C[j]++;
n/=B[j];
}
j++;
}
return 0;
}