- 论坛徽章:
- 0
|
在我的机器上求40000以下的所有质数, python要61秒,Excel vba只要4秒多。
-------------------- python代码 --------------------
#!/usr/bin/env python
y=3
myfile=open('primes.txt','w')
while y<40000:
x=y/2
while x>1:
if y%x==0:break
x-=1
else:
print >>myfile,y,'\n'
y+=1
myfile.close()
print 'End'
-------------------- End Python --------------------
-------------------- Excel VBA --------------------
Sub find_primer()
Dim Arry1D_Primer(1 To 30000, 0 To 1)
Dim y As Long, x As Long, m As Long, n As Long
Dim i As Integer, k As Integer
k = 0
m = 1
For y = 3 To 40000
i = Int(y / 2)
For x = i To 2 Step -1
If (y Mod x) = 0 Then
k = 1
Exit For
End If
Next x
If k = 0 Then
Arry1D_Primer(m, 0) = y
m = m + 1
End If
k = 0
Next y
Range("a1:b30000").Value = Arry1D_Primer
End Sub
-------------------- End VBA -------------------- |
|