Vba 圣达拉姆筛

Vba 圣达拉姆筛,vba,excel,primes,prime-factoring,Vba,Excel,Primes,Prime Factoring,我需要有人陪我穿过Sundaram()的筛子。假设我有一个数组中的整数列表(41,43,47,49,51,53,59) 现在,上面提到的维基百科解释提到:* 当且仅当奇数整数为 表2(i+j+2ij)+1 *。我试图了解如何在程序(最好是VBA)中实现这一点。使输出为(41,43,47,53,59) 衷心感谢您的解释 关于,我在上节讨论了Sundaram的筛子。该算法由以下伪代码给出: function sundaram(n) m := n // 2 sieve := makeA

我需要有人陪我穿过Sundaram()的筛子。假设我有一个数组中的整数列表(41,43,47,49,51,53,59)

现在,上面提到的维基百科解释提到:*

当且仅当奇数整数为 表2(i+j+2ij)+1

*。我试图了解如何在程序(最好是VBA)中实现这一点。使输出为(41,43,47,53,59)

衷心感谢您的解释


关于,

我在上节讨论了Sundaram的筛子。该算法由以下伪代码给出:

function sundaram(n)
    m := n // 2
    sieve := makeArray(m+1, True)
    for i from 1 to m // 4
        for j from i to (m-i) // (2*i+1)
            sieve[i+j+2*i*j] := False
    ps := [2]
    for i from 1 to m
        if sieve[i]
            append 2*i+1 to ps
    return ps

根据WP文章,从范围
k=1…n
中删除一些数字后,我们得到的结果是
m=2k+1
。这意味着所有的
m
s都是奇数

现在,奇数组合必须是两个奇数的乘积:
2k+1=(2i+1)(2j+1)=4ij+2i+2j+1
(如果其中一个是偶数,那么乘积也将是偶数)。但这意味着
k=2ij+i+j
。因此,筛子的操作


正如很好地解释的那样

自己做作业。如果您有一些实际的代码,并且需要有关其特定部分的帮助,那么请随意在此处发布代码并提出特定的问题。但现在你只是在找人帮你做作业我同意Marc的观点。在vba中对Sundaram进行一次简单的谷歌搜索
siever,你会发现很多例子;)谢谢Marc B和Siddharth Rout。最后一行是“解释”而不是“实际代码”:(关于简单的谷歌搜索,它没有给我“这么多的例子”。:(谢谢你的回复,用户448810。你能解释一下筛子本身(用普通英语)吗,这样我就可以设计自己的实现了吗?与此同时,我一定会学习你共享的代码,并访问你的博客。谢谢