Jak znaleźć czynniki pierwsze liczby w c ++?

Próbuję zadać pytanie euler projektu nr 3 i nie uzyskuję pożądanego rezultatu. Moja logika:

Wymień wszystkie czynniki liczby 13195 i zapisz je w tablicy.Sprawdź, czy każdy numer w tablicy jest liczbą pierwszą.Jeśli liczba zostanie znaleziona jako pierwsza, zapisz ją w innej tablicy.wyświetl zawartość drugiej tablicy.Mam nadzieję, że zawiera tylko czynniki pierwsze.

WYNIK: Pierwsza tablica zawiera wszystkie czynniki zgodnie z oczekiwaniami. W chwili, gdy myślę, że duplikuje pierwszą tablicę lub poślizgi w niektórych nie-liczbach pierwszych, proszę o pomoc! :)

Mój kod:

#include <iostream>

using namespace std;

long int x,y=2;
long int number=13195;
long int f[1000000],ff[1000000];
int st=1;
int open=0;
int open2=0;
int a=0;
bool isprime;

int main()
{

    for(x=1;x<=number;x++)
    {
        if(number%x==0)
        {
            f[a] = x;
            a++;
        }
    }
    while(st<=16)
    {
        while(y<f[st])
        {
            if(f[st]%y==0 && f[st]!=y)
            {
                break;
            }
            else if(f[st]%y!=0 && f[st!=y])
            {
                ff[open] = f[st];
            }
            y++;
        }
        open++;
        st++;
    }
    for(open2=0;open2<open;open2++)
    {
        cout<<ff[open2]<<" is a prime factor of "<<number<<"\n";
    }
    return 0;
}

używając tego do znalezienia pierwszych prac:

while(st<=a){
    int k = f[open];
    for(int i=2;i<k;i++)
    {
        if(k%i==0)
        {
            isprime = false;
            break;
        }
        else if(f[open]!=0 && f[open]%i!=0 && f[open]!=i)
        {
            isprime =true;
        }

    }
    if(isprime==true)
    {
        ff[st] = k;
        open3++;
        isprime = false;
    }
    open++;
    st++;
    }
    cout<<"The primes of them are "<<open3<<"."<<"\n";
    cout<<"Press RETURN to show them."<<"\n";
    cin.get();
    for(open2=0;open2<=open3;open2++)
    {
        cout<<ff[open2]<<" is a prime factor of "<<number<<"."<<"\n";
    }

questionAnswers(2)

yourAnswerToTheQuestion