|
[这个贴子最后由白新岭在 2010/05/10 09:49am 第 1 次编辑]
[watermark]这个程序大概需要这样的几个控件和步骤(因为自己对这个一窍不通,措辞有点词不达意,我是根据自己在Excel软件中的函数和自己的手工操作步骤来叙述的)。一个素数表,存放100万内的素数,当然要按大小顺序编号入座,以便后边好随时根据需要和条件来调取。有一个初始值,有一个外循环次数,它的值可以从k开始,到k+n结束,其关系式为:初始值+(k+外循环次数n)*步长,也就是说,假设初始值为99,步长为2310的话,则外循环第11次(初始k=3)需要判断的值为99+(3+11)*2310=32439.
如果n=100,则外循环为101次(在程序中n是从0开始吧)。
然后有m个偶数(余数)0,2a,2b,2c,....。一般的把m限制在15个以内吧,在大平现在的计算机是无法计算的。也就是说m个预先给的常量一般为1-15个偶数。我们可以假设判断条件(素数)是从大于最大的余数以后开始被调入的。内循环是,每确定一个值n,把它代入关系式后,判断新值是否符合条件,符合条件就累计一次,不符合条件就不计数。
判断方法,从第一个素数开始依次调入每一个素数(小于被判断值的开方数),对被判断值对素数求余,然后在与预先给定的余数比较,预先给的余数中有此余数,就结束内循环(且不累计),进入下一个外循环值n;如果没有与其相同的余数,则继续调入下一个素数进行判断,如此反复进行下去,直到最后一个大素数参与判断完为止(当然这个大素数,最后参与判断的素数小于等于被判断值的开方值),到此还没有被排除的数视为符合所有条件的被判断数,次数累计一次,同时把此被判断值输送到预先设计好的表中储存,以备用。
把所有n都判断完为止。
具体题,筛选19+(3+0至100)*30中符合条件的数,计数并输出实际值,预先给的余数为0,2,6,8.
这里初始值为19,被判断的数数量为101个(即外循环次数为101次),单个被判断值提前给的限定条件有4个余数0,2,6,8. |
|