看看下面这个程序:- a1 = Range[1, 10000000,
- 5]; (*形成一个列表,公差是 5,首项是 1、最大不超过 10000000 的等差数列 *)
- plist = Select[a1, PrimeQ]; (*除去其中的合数,只留下质数 *)
- a2 = SplitBy[a1,
- PrimeQ]; (* \
- 变换成二维的列表,子列表是:{合数数列1},{第一个质数},{合数数列2},{第二个质数},{合数数列3},{第三个质数},\
- \[CenterDot]\[CenterDot]\[CenterDot]\[CenterDot]\[CenterDot]\
- \[CenterDot] *)
- a3 = a2[[1 ;; -1 ;;
- 2]]; (* 筛选出其中的第 1、3、5、7、\[Ellipsis]\[Ellipsis]个子列表 *)
- Li = Length /@ a3 ; (* 求出上述各子列表的长度 *)
- Lmax = Max[Li] (* 求出最大的长度是多少 *)
- n = Ordering[
- Differences@plist, -1][[1]]; (* 第 n 个质数与第 n+1 个质数间的合数最多。n=? *)
- plist[[n ;; n + 1]] (* 第 n 个质数与第 n+1 个质数各是什么? *)
- a3[[n + 1]] (* 最长的合数列是什么? *)
Copy the Code 运行结果是:
107
{7929491,7930031}
{7929496,7929501,7929506,7929511,7929516,7929521,7929526,7929531,7929536,7929541,7929546,7929551,7929556,7929561,7929566,7929571,7929576,7929581,7929586,7929591,7929596,7929601,7929606,7929611,7929616,7929621,7929626,7929631,7929636,7929641,7929646,7929651,7929656,7929661,7929666,7929671,7929676,7929681,7929686,7929691,7929696,7929701,7929706,7929711,7929716,7929721,7929726,7929731,7929736,7929741,7929746,7929751,7929756,7929761,7929766,7929771,7929776,7929781,7929786,7929791,7929796,7929801,7929806,7929811,7929816,7929821,7929826,7929831,7929836,7929841,7929846,7929851,7929856,7929861,7929866,7929871,7929876,7929881,7929886,7929891,7929896,7929901,7929906,7929911,7929916,7929921,7929926,7929931,7929936,7929941,7929946,7929951,7929956,7929961,7929966,7929971,7929976,7929981,7929986,7929991,7929996,7930001,7930006,7930011,7930016,7930021,7930026} |