java - Java中的因素
问题描述
我正在尝试计算 n 的阶乘的素因子列表,其中素因子按升序排序,并且此列表中的每个因子与它在阶乘的素因子分解中出现的次数完全相同。
我有一个程序可以计算素数的链表,直到指定的数字,但我不确定如何在将当前正乘以阶乘的整数的素数因子附加时实现它:
解决方案
这是另一种方式。它包括几项检查以确保不必要的测试,以便尽快退出循环。如果想要在 N 阶乘末尾找到 0 的数量,它的工作方式相同。为此,只需将除以N
5 的连续幂的商相加(因为 5 是 10 的较大因子)。
这是通过连续除以每个素数将 N 的商相加来实现的。
public static List<Integer> getNFactorialFactors(int n, List<Integer> primes) {
List<Integer> factors = new ArrayList<>();
int nn = n;
for (int p : primes) {
while (nn > 1) {
for (int i = nn / p; i > 0; i--) {
factors.add(p);
}
nn /= p;
}
nn = n;
}
return factors;
}
推荐阅读
- flutter - 将属性路径映射为函数参数
- c# - Game of Life Parallel.For 循环无法正常工作
- c - 如何在 printf 中使用条件运算符但没有“else”部分?
- azure - 如何将 Blob 生命周期规则添加到 ARM 模板
- apache-kafka - 具有高突变频率的 Debezium 效率
- c++ - 使用 nmake 或其他工具(如批处理脚本)从命令行编译 c++
- python - 通过首先读取镶木地板文件将新列附加到数据框
- c++ - 在 OpenGL ES 2.0 中显示意外的行
- python - 在 python 中使用 textblob 进行翻译的问题 - textblob.exceptions
- c++ - 在类外访问类的私有成员