我不是程序员,但我正在学习,
有人可以帮我理解 FFT 是什么吗?如何在 python 代码中实现它,例如生成从 1 到 10000 的素数的 python 代码?
也有人建议使用 NumPy,我下载并安装了它,但不知道它的作用。它与FFT有关吗?
任何帮助,将不胜感激。
问候, babsdoc
好的,我将忽略有关 fft 的所有内容(它与信号处理有关,根本与质数无关)。
最著名的基本和著名的方法是埃拉托色尼筛法。维基百科有一个很好的视觉示例来说明它是如何工作的。
在(未经测试的)Python 中,您可以按如下方式对其进行编码:
max_val = 1000
seive = range(max_val)
seive[0] = None # 1 is not prime!
for x in range(1, max_val):
if seive[x]:
print "{prime} is prime.".format(prime = x)
# now remove multiples of prime x from the seive
y = 2*x
while y <= max_val:
seive[y] = None
y = y + x
使用此处建议的函数“Python:检查数字是否为素数”
我建议您使用以下代码:
def isprime(number):
if number<=1:
return 0
check=2
maxneeded=number
while check<maxneeded+1:
maxneeded=number/check
if number%check==0:
return 0
check+=1
return 1
prime_list = [i for i in xrange(1,1001) if isprime(i)]
print prime_list
>>> [3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, ...
将 xrange( 1,1001 ) 调整到您想要的范围,您将获得所有素数