How to find prime factors of a number in c++? -


i attempting project euler question number 3, , don't desired result. logic:

  1. list factors of number 13195 , save them in array.
  2. check if each number in array prime.
  3. if number found prime save in other array.
  4. display contents of second array.
  5. hope contains prime factors.

result: first array contains factors expected, second think duplicates first array or slips in non-primes, please help! :)

my code:

#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]<<" prime factor of "<<number<<"\n";     }     return 0; } 

using finding prime works:

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 "<<open3<<"."<<"\n";     cout<<"press return show them."<<"\n";     cin.get();     for(open2=0;open2<=open3;open2++)     {         cout<<ff[open2]<<" prime factor of "<<number<<"."<<"\n";     } 

why don't try

for(x=1;x<=number;x++) {     if(number%x==0 && isprime(x))     {         f[a] = x;         a++;     } } 

.. ..

int isprime(int x) {   for(int i=2;i<=x/2;i++)  {    if(x%i==0)    return 0;  }  return 1;  } 

Comments

Popular posts from this blog

node.js - Bad Request - node js ajax post -

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -