600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C++判断是否为素数 求一个数的因数 质因数分解

C++判断是否为素数 求一个数的因数 质因数分解

时间:2022-11-06 02:29:44

相关推荐

C++判断是否为素数 求一个数的因数 质因数分解

判断一个数是否为素数

#include<iostream>#include<vector>#include<math.h>#include<algorithm>/*判断是否为素数*/bool isprime(int n){bool result;int k = (int)sqrt((double)n); // 只需要循环到 √n 即可int i = 0;for (i = 2; i <= k; i++){if (n%i == 0)break;}result = (i > k);return result;}void test_isprime(){std::cout << " isprime(2) = " << isprime(2) << '\n';std::cout << " isprime(10) = " << isprime(10) << '\n';std::cout << " isprime(17) = " << isprime(17) << '\n';}

求一个数的因数

/* 寻找所有因数 包括1和其本身*/std::vector<int> factorize(int n){std::vector<int> answer;int k = (int)sqrt((double)n);int i = 0;for (i = 1; i <= k; i++){if (!(n%i)){answer.push_back(i);answer.push_back(n / i);}}sort(answer.begin(), answer.end()); // 利用sort函数进行排序,再输出,这一步若不是必须可省略std::cout << " The factors of " << n << " are";return answer;}/* 打印vector */void print_vector(std::vector<int>& vec){for (auto it = vec.cbegin(); it != vec.cend(); ++it)std::cout << ' ' << *it;std::cout << '\n';}void test_factorize(){std::vector<int> vf;vf = factorize(2);print_vector(vf);vf = factorize(72);print_vector(vf);vf = factorize(196);print_vector(vf);}

质因数分解

/* 质因数分解 */std::vector<int> prime_factorize(int n){std::vector<int> answer;if (n != 2){int k = (int)sqrt((double)n); // 只需要循环到 √n 即可int i = 0, m = n;for (i = 2; i <= k; i++){while (m%i == 0){m = m / i;answer.push_back(i);}if (m == n)answer.push_back(n);}}elseanswer.push_back(n);std::cout << " The prime factorization of " << n << " are";return answer;}void test_prime_factorize(){std::vector<int> vf;vf = prime_factorize(2);print_vector(vf);vf = prime_factorize(72);print_vector(vf);vf = prime_factorize(196);print_vector(vf);}int main(){test_isprime();test_factorize();test_prime_factorize();return 0;}

结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。