c思考问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 19:39:43
编程输出15组孪生素数

1. 最简单的办法是直接输出已知的:
以下列出了最小的35对孪生素数: (3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73), (101, 103), (107, 109), (137, 139), (149, 151), (179, 181), (191, 193), (197, 199), (227, 229), (239, 241), (269, 271), (281, 283), (311, 313), (347, 349), (419, 421), (431, 433), (461, 463), (521, 523), (569, 571), (599, 601), (617, 619), (641, 643), (659, 661), (809, 811), (821, 823), (827, 829), (857, 859), (881, 883)

2. 如果要进行计算得到,也可以通过下面已经证明的定理来简化
(1)大于3的孪生素数可以表示成 (6n - 1, 6n + 1),其中n为一个自然数。除了 n = 1 的情形,n必须以0,2,3,5,7或8结尾。
(2)可以证明 (m, m + 2) 是孪生素数,当且仅当
4((m-1)! + 1) = -m mod (m(m+2))

第一对(3, 5)可以直接输出,
其他的你将需要从 n={ 2, 3, 5, 7, 8,10,
12,13,15,17,18,20,
......}
出发,得到 m=6n - 1
判断4((m-1)! + 1)模(m(m+2))结果是否为-m
是则输出,直到得到15组为止。