mirror of
https://bitbucket.org/Mattrixwv/my-classes.git
synced 2025-12-06 18:23:57 -05:00
Added a function to get all the prime factos of a number
This commit is contained in:
@@ -39,6 +39,9 @@ namespace mee{
|
|||||||
//This is a function that returns all the primes <= goalNumber and returns a vector with those prime numbers
|
//This is a function that returns all the primes <= goalNumber and returns a vector with those prime numbers
|
||||||
template<class T>
|
template<class T>
|
||||||
std::vector<T> getPrimes(T goalNumber);
|
std::vector<T> getPrimes(T goalNumber);
|
||||||
|
//This function returns all prime factors of a number
|
||||||
|
template<class T>
|
||||||
|
std::vector<T> getFactors(T goalNumber);
|
||||||
//This is a function that gets all the divisors of num and returns a vector containing the divisors
|
//This is a function that gets all the divisors of num and returns a vector containing the divisors
|
||||||
template<class T>
|
template<class T>
|
||||||
std::vector<T> getDivisors(T num);
|
std::vector<T> getDivisors(T num);
|
||||||
@@ -108,6 +111,34 @@ std::vector<T> getPrimes(T goalNumber){
|
|||||||
return primes;
|
return primes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
std::vector<T> getFactors(T goalNumber){
|
||||||
|
//Get all the prime numbers up to sqrt(number). If there is a prime < goalNumber it will have to be <= sqrt(goalNumber)
|
||||||
|
std::vector<T> primes = getPrimes((T)ceil(sqrt(goalNumber))); //Make sure you are getting a vector of the correct type
|
||||||
|
std::vector<T> factors;
|
||||||
|
|
||||||
|
//Need to step through each prime and see if it is a factor of the number
|
||||||
|
for(int cnt = 0;cnt < primes.size():){
|
||||||
|
if((goalNumber % primes[cnt]) == 0){
|
||||||
|
factors.push_back(primes[cnt]);
|
||||||
|
goalNumber /= primes[cnt];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
++cnt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//If it didn't find any factors in the primes the number itself must be prime
|
||||||
|
if(factors.size() == 0){
|
||||||
|
factors.push_back(goalNumber);
|
||||||
|
goalNumber /= goalNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
///Should add some kind of error throwing inc ase the number != 1 after searching for all prime factors
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
std::vector<T> getDivisors(T num){
|
std::vector<T> getDivisors(T num){
|
||||||
std::vector<T> divisors; //Holds the number of divisors
|
std::vector<T> divisors; //Holds the number of divisors
|
||||||
|
|||||||
Reference in New Issue
Block a user