【题解】 同余 poj3292 semi-prime H-number 未完

来源:互联网 发布:全球生产网络弊端 编辑:程序博客网 时间:2024/06/07 03:43

本篇博客暂未完成,暂为留坑


发这篇博客的主要目的就是希望能用自己的话来说明一下书中或我看到的一些博客中没有细述的
关于5i+4ix的推出
也许也是我太弱了才觉得这个式子的直接出现有点突兀

首先感谢psb同学
然后”题意”部分的大体框架我在这篇博客中复制,翻译的中文名词为《数学一本通》中所述


题目

题意

一个H-数是所有的模四余一的数。
如果一个H-数是H-素数 当且仅当它的因数只有1和它本身(除1外)。
需要注意的是, 因数也属于H-数集合
一个H-数是H-合成数当且仅当它只由两个H-素数的乘积表示
给你一个数h,问1到h有多少个H-合成数。


题解

方法1

之前我在脑中大概想的方法
具体可见这里
大概就是正常筛完素数用枚举因子的方法找合成数
本人并没有打

方法2

当然我这是看完题解后假装尝试从最开始思考的
大概是直接筛出H-素数后计算出所有是两个H-素数的积且为H-数的数的数量 可打表
当然这里面有几个问题

  • 怎么“直接”筛出H-素数呢?
  • 这个积怎么就能保证不能拆成三个或以上个的H-素数的积呢?
  • 打表中快速统计到h的个数? 当然可能这个问题比较弱,但看到书中代码我还是觉得比较巧妙

直接筛H-素数

我就是觉得这个地方似乎都不太明确式子的推出
类似筛普通素数,关键之处在由是素数的数快速找出不是素数的数
先设有一个H-素数 i, 我们要由这个i推出
我们可以从这些数的性质出发
- 是且仅是两个H-素数的积
嗯…一个素数肯定是i,另一个的话,反正它也要满足H-数的共同性质——形如4x+1
那么我们大胆使另一个数就是4i+1
当然,这是很不负责任的,还需要证明它是H-素数

证明4i+1是H-素数

反证法,若它不是素数,那么它一定可以被表示为两个不为1或它本身的H-数的积
设这两个数为p1,p2
那么对于任意一个,这里取p1,它肯定满足

p1mod4=1

也就是
((i4+1)/p2)mod4=1

设有一整数t,会有
(i4+1)/p2=4t+1

移项整理后


后记

这篇博客实在是拖着拖着写,写得太久
主要是经常写着写着又觉得哪里需要想想
以后还是要注意,写博客前一定先写个框架,在大体范围中将所有逻辑推理要思考的全部过一遍