免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

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

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

用 mathematica 编程来说明。
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

看看下面这个程序:
  1. a1 = Range[1, 10000000,
  2.   5];   (*形成一个列表,公差是 5,首项是 1、最大不超过 10000000 的等差数列 *)
  3. plist = Select[a1, PrimeQ];  (*除去其中的合数,只留下质数 *)
  4. a2 = SplitBy[a1,
  5.   PrimeQ];   (* \
  6. 变换成二维的列表,子列表是:{合数数列1},{第一个质数},{合数数列2},{第二个质数},{合数数列3},{第三个质数},\
  7. \[CenterDot]\[CenterDot]\[CenterDot]\[CenterDot]\[CenterDot]\
  8. \[CenterDot] *)
  9. a3 = a2[[1 ;; -1 ;;
  10.     2]]; (* 筛选出其中的第 1、3、5、7、\[Ellipsis]\[Ellipsis]个子列表 *)
  11. Li = Length /@ a3 ; (* 求出上述各子列表的长度 *)
  12. Lmax = Max[Li]  (* 求出最大的长度是多少 *)
  13. n = Ordering[
  14.    Differences@plist, -1][[1]];  (* 第 n 个质数与第 n+1 个质数间的合数最多。n=? *)
  15. plist[[n ;; n + 1]]  (* 第 n 个质数与第 n+1 个质数各是什么? *)
  16. a3[[n + 1]]  (* 最长的合数列是什么? *)
复制代码
运行结果是:

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}

TOP

返回列表 回复 发帖