第一阶段入门级竞赛的第二个问题(连续质数求和)于 2011 年 5 月 9 日发布并于 2011 年 6 月 3 日关闭(美国太平洋夏令时)。
您需要在 2011 年 6 月 3 日中午 12:00(美国太平洋夏令时)前提交您的答案。 请参阅竞赛规则了解详情,或访问此问题的专用论坛向其他人请教。 祝您好运!
连续质数求和
一对连续质数是指中间没有其他质数的两个质数。 连续质数的概念可以扩展至任意数量“ k”,其中在有序质数集的最小质数和最大质数之间(包括其本身)只有 k 个质数。我们将这个质数集称为“k-对”。两个分别由 3 个连续质数组成的集合示例为:[29, 31, 37] 和 [11083, 11087, 11093]。
问题描述:
编写一段多线程代码,对所有可能的“k-对”连续质数集求和,并确定所求和是否为完全幂。 例如,假设 p1、p2 和 p3 是连续质数,那么这些质数的和为 N (=p1 + p2 + p3)。 如果 N = n^m,其中 n、m >= 2(即 N 为完全平方、完全立方等),则数值 N 为完全幂。将从命令行提供此程序的输入内容,其中包括从中选择质数进行相加的数字范围以及此程序需要考虑的最高指数 (m)。此程序将输出相加结果为完全幂值的连续质数集。
输入描述:
将从命令行上提供三个整数作为此程序的输入。第一个整数和第二个整数表示数字范围的起始和终止值(包括其本身),必须使用此范围内的质数。 第三个命令行参数为最大幂值 m,此程序必须使用它来计算完全幂。 输入值将用 32 位的无符号整数表示。命令行上的第四个参数将是储存输出结果的文本文件的名称。
输出描述:
此程序将输出一列连续质数以及作为这些质数和的完全幂。为了缩短输出内容,只需打印连续质数的第一个和最后一个质数。 必须打印求得的和以及判断该和为完全幂的算式。此程序的输出结果将储存在命令行的第四个参数所指定的文本文件中。如果没有等于完全幂的连续质数和(在输入数字范围内),则应该在输出文件中写入一条消息说明这种情况。
命令行示例: primesums.exe 1 29 6 sumsout.txt
输出文件示例,sumsout.txt:
sum(3:5) = 8 = 2**3
sum(17:19) = 36 = 6**2
sum(2:23) = 100 = 10**2
sum(13:19) = 49 = 7**2
sum(5:13) = 36 = 6**2
计时:
将使用此程序的总执行时间进行计分。为得到最准确的计时结果,所提交的代码需要包含计时代码并将计算出的总执行时间打印到标准输出,否则将使用外部秒表计时。
http://software.intel.com/zh-cn/contests/intel-threading-challenge-2011/contests.php