悠闲数学娱乐论坛(第2版)'s Archiver

TSC999 发表于 2017-5-19 18:18

在这个等差数列中,能否找到100个连续合数?

在上限不大于 1 千万的等差数列 1, 6,11,16,21,26,31,36,41,....中,能否找到 100 个连续的合数?

用 mathematica 编程来说明。

TSC999 发表于 2017-5-19 18:21

看看下面这个程序:[code]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]]  (* 最长的合数列是什么? *)
[/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}

isee 发表于 2017-10-12 14:42

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=21173&ptid=4611]2#[/url] [i]TSC999[/i] [/b]


    哇,无所不能,我破电脑小卡了2秒。。。。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.