How to find prime factors of a number in c++? -
i attempting project euler question number 3, , don't desired result. logic:
- list factors of number 13195 , save them in array.
- check if each number in array prime.
- if number found prime save in other array.
- display contents of second array.
- 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
Post a Comment