HJ6 题解 | #质数因子# 回顾质数,因数的判定
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#include<iostream> using namespace std; //判断1个数是否为质数 bool isPrime(int num) { if (num <= 1) { return false; } if (num == 2) { return true; } if (num % 2 == 0) { return false; } int i = 3; while (i * i <= num) { if (num % i == 0) { return false; } i += 2; } return true; } int main() { int num; int p[1000]; //数组用来存储质数因子 cin >> num; if (isPrime(num)) { //先判断数本身是不是质数 cout << num; return 0; } int num2 = num / 2; //一个数的因数不会超过自身大小的一半 int i = 2; int k = 0; int j = 0; //记录因数个数 while (i <= num2) { //循环不超过数本身大小的一半 if (num % i == 0) { if (isPrime(i)) { //判断因数i是否是质数 p[j] = i; //是的话加入到p数组 j++; k = num / i; //因数i对应的另一个因数k } if (isPrime(k)) { //i不是质数不会执行 p[j] = k; j++; break; //1个因数是质数,对应的因数也是质数,则肯定不会有其他因数了 } num = num / i; } else { i++; } } for (int i = 0; i < j; i++) cout << p[i] << ' '; return 0; }
华为机试刷题实录 文章被收录于专栏
记录一下本科应届生(我自己)刷华为机试题的过程