c++ - 不同素数分区的数量

标签 c++ algorithm primes partitioning prime-factoring

<分区>

Possible Duplicate:
A number as it’s prime number parts

我有一个家庭作业,非常难,我必须得到给定数字的所有不同的素数分区。例如,数字 7 有五个不同的素数分区(或者用五种不同的方式表示它拥有的 2 个素数分区):

  • 5 + 2
  • 2 + 5
  • 3 + 2 + 2
  • 2 + 3 + 2
  • 2 + 2 + 3

如您所见,如果数字是素数,则数字本身会被排除在外。我不必打印所有不同的分区,只需打印它们的数量。

所以我对此有点迷茫。我完全无法生成任何代码,但我认为我应该从动态编程的角度来处理这个问题。我只是要求一些提示。有人知道吗?提前致谢。

输入的最高数字是 100。 另外,程序运行时间不能超过1秒,内存限制为128MB。

最佳答案

要解决这个问题,您需要结合三个想法:

假设给定的数字是 n:

  • 找出所有小于n的素数,如图here .

  • 动态计算素数数组和 n 的子集总和。一些提示是 herehere

  • 然后,计算您从第二步获得的每个答案的不同排列数,如 here .

当然,这只是一个提示。但它应该对您编写最终代码有很大帮助。

关于c++ - 不同素数分区的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14398432/

相关文章:

c++ - 为什么声明 `void(*pf)(int) = bar;` 会触发下面代码片段中的 `static_assert`?

c# - iPhone 编程 - 印象,意见?

c - 生成一个包含相邻互质对的列表

algorithm - 质因数分解最大为 10^18 的最快方法

javascript - 这个奇怪的 JavaScript 素数检查函数是如何工作的?

c++ - 如何在我的 visual studio 项目中设置 gtest

algorithm - 在六边形网格中找到所有长度为 n 的可能路径

python - set.add(x) 与集合 : What is faster? 中的 x

Java 在互联网算法(搜索、大数据等)中的流行

c++ - boost 序列化: save_construct_data not called