#include
#include
#include
#include
using namespace std;
vectorint> faktorizacija(int n){
vectorint> delioci(n+1);//ovaj deo cesto izostavljas
for(int i=0; i<=n; i++)
{
delioci[i] = i;
}
for(int i=2; i<=sqrt(n); i++)//i je 2
{
if(delioci[i] == i)
{
for(int j=i*i; j<=n; j=j+i)
{
if(delioci[j] == j)
{
delioci[j] = i;
}
}
}
}
vectorint> rezultati;
while(n != 1)
{
rezultati.push_back(delioci[n]);
n = n/delioci[n];
}//ovu funkciju zapamti!
return rezultati;
}
int main(){
int n;
cin >> n;
vectorint> rezultati = faktorizacija(n);
for(int i=0; irezultati.size(); i++)
{
cout << rezultati[i] << " ";
}
return 0;
}
---------------------------------------------------------------------------------------------------
#include
#include
typedef struct _cvor
{
int podatak;
struct cvor* sledeci;
} cvor_t;
typedef struct _lista
{
cvor_t* glava;
cvor_t* rep;
} lista_t;
//inicijalizacija
void inicijalizujlistu(lista_t* lista)
{
lista->glava = NULL;
lista->rep = NULL;
}
//kreiraj cvor
cvor_t* kreirajcvor(int x)
{
cvor_t* cvor = (cvor_t*)malloc(sizeof(cvor_t));
cvor->podatak = x;
cvor->sledeci = NULL;
return cvor;
} ----------------------------------------------------------------
//ako se dodaje i na pocetak i na kraj treba da se koristi unitar void funkcije
//void dodajna(lista_t* lista, int x)
{
cvor_t* novi = kreirajcvor(x);
if (lista->glava == NULL && lista->rep == NULL)
{
lista->glava = novi;
lista->rep = novi;
return;
}
// dodavanje na pocetak
novi->sledeci = lista->glava;
lista->glava = novi;
// dodavanje na kraj
lista->rep->sledeci = novi;
lista->rep = novi;
}
Cvor_t* pronadjiCvor(Lista_t* lista, int x) {
for (Cvor_t* tmp = lista->glava; tmp != NULL; tmp = tmp->sledeci) {
if (tmp->podatak == x) {
return tmp;
}
}
return NULL;
}
void prikaziListu(Lista_t* lista) {
for (Cvor_t* tmp = lista->glava; tmp != NULL; tmp = tmp->sledeci) {
printf("%d ", tmp->podatak);
}
printf("\n");
}
Cvor_t* pronadjiNtiElement(Lista_t* lista, int n) {
for (Cvor_t* tmp = lista->glava; tmp != NULL; tmp = tmp->sledeci) {
if (n == 0) {
return tmp;
}
n--;
}
return NULL;
}
void obrisiCvor(Lista_t* lista, int x) {
if (lista->glava == NULL && lista->rep == NULL)
return;
if (lista->glava == lista->rep && lista->glava->podatak == x) {
free(lista->glava);
lista->glava = NULL;
lista->rep = NULL;
return;
} else if (lista->glava->podatak == x) {
Cvor_t* zaBrisanje = lista->glava;
lista->glava = lista->glava->sledeci;
free(zaBrisanje);
return;
}
Cvor_t* tmp = lista->glava;
for (; tmp->sledeci != NULL && tmp->sledeci->podatak != x; tmp = tmp->sledeci)
;
if (tmp->sledeci == NULL)
return;
if (tmp->sledeci == lista->rep)
lista->rep = tmp;
Cvor_t* zaBrisanje = tmp->sledeci;
tmp->sledeci = tmp->sledeci->sledeci;
free(zaBrisanje);
}
void obrisiListu(Lista_t* lista) {
while (lista->glava != NULL) {
Cvor_t* tmp = lista->glava;
lista->glava = lista->glava->sledeci;
free(tmp);
}
lista->rep = lista->glava;
}
-------------------------------------------------------------------------
Lista_t l; //ova lista formira strukturu l, koja sadrzi rep i glavu. int x; inicijalizujListu(&l); //ove funkcije samo unose odredjene vrednosti u moju listu dodajNaKraj(&l, 1);