相关疑难解决方法(0)

如何在Python中实现有效的素数无限生成器?

这不是作业,我只是好奇.

INFINITE是这里的关键词.

我希望在primes()中使用它作为p.我相信这是Haskell中的内置函数.

所以,答案不能像"Just do a Sieve"那样天真.

首先,您不知道将消耗多少连续素数.好吧,假设你可以一次编制100个.您是否会使用相同的Sieve方法以及素数公式的频率?

我更喜欢非并发方法.

感谢您阅读(和写作;))!

python primes generator

60
推荐指数
5
解决办法
2万
查看次数

双流馈送以防止不必要的记忆?

我是Haskell的新手,我正试图以流处理方式实现Euler的Sieve.

当我查看关于素数Haskell Wiki页面时,我发现了一些神秘的流优化技术.在3.8维基的线性合并中:

primesLME = 2 : ([3,5..] `minus` joinL [[p*p, p*p+2*p..] | p <- primes']) 
  where
    primes' = 3 : ([5,7..] `minus` joinL [[p*p, p*p+2*p..] | p <- primes'])

joinL ((x:xs):t) = x : union xs (joinL t)
Run Code Online (Sandbox Code Playgroud)

它说

" 根据Melissa O'Neill的代码,这里引入了双素数反馈,以防止不必要的记忆,从而防止内存泄漏."

怎么会这样?我无法弄清楚它是如何工作的.

primes haskell sieve-of-eratosthenes lazy-sequences space-leak

9
推荐指数
1
解决办法
374
查看次数

Prolog累加器.它们真的是一个"不同"的概念吗?

我正在我的人工智能实验室学习Prolog,从源头学习Prolog Now!.

在第5章中,我们来了解累加器.作为示例,给出了这两个代码片段. 查找列表的长度

没有累加器:

len([],0).
len([_|T],N) :- len(T,X), N is X+1.
Run Code Online (Sandbox Code Playgroud)

与累加器:

accLen([_|T],A,L) :- Anew is A+1, accLen(T,Anew,L).
accLen([],A,A).
Run Code Online (Sandbox Code Playgroud)

我无法理解,这两个片段在概念上有何不同?累加器到底有什么不同?有什么好处?

蓄能器听起来像中间变量.(如果我错了,请纠正我.)到目前为止,我已经在我的程序中使用过它们,所以它真的是一个很大的概念吗?

recursion tail-recursion prolog accumulator

9
推荐指数
3
解决办法
3968
查看次数