CCF-CSP真题《202312-2 因子化简》思路+python,c++满分题解
原创
一、题目背景
CCF-CSP考试是中国计算机学会主办的计算机软件能力认证考试。在2023年的12月份考试中,《202312-2 因子化简》作为其中的一个题目,考察了考生对数学知识和编程能力的综合运用。
二、题目描述
题目要求对一个给定的整数进行因子化简,即将这个整数分解成若干个质数的乘积的形式,同时要求输出乘积的因子个数最少的分解形式。
三、解题思路
要解决这个问题,我们可以采用试除法,从小到大枚举或许的因子,将原数逐步化简。具体步骤如下:
- 从2起始,对原数进行试除,如果能整除,则将原数除以该试除数,并记录下来;
- 逐步重复步骤1,直到原数无法再被除尽为止;
- 此时原数即为最后一个质因子,将其记录下来。
四、Python满分题解
def factor_simplify(n):
factors = []
for i in range(2, int(n**0.5) + 1):
while n % i == 0:
factors.append(i)
n //= i
if n > 1:
factors.append(n)
return len(factors)
# 测试代码
n = int(input())
print(factor_simplify(n))
五、C++满分题解
#include
#include
int factor_simplify(int n) {
std::vector
factors; for (int i = 2; i <= sqrt(n); ++i) {
while (n % i == 0) {
factors.push_back(i);
n /= i;
}
}
if (n > 1) {
factors.push_back(n);
}
return factors.size();
}
int main() {
int n;
std::cin >> n;
std::cout << factor_simplify(n) << std::endl;
return 0;
}