Strong and weak primes: Difference between revisions

no edit summary
m (C++ - use ostream_iterator to print list of primes)
No edit summary
Line 1,436:
37,780 weak primes below 1,000,000
321,750 weak primes below 10,000,000
</pre>
 
=={{header|PureBasic}}==
<lang PureBasic>#MAX=10000000+20
Global Dim P.b(#MAX) : FillMemory(@P(),#MAX,1,#PB_Byte)
Global NewList Primes.i()
Global NewList Strong.i()
Global NewList Weak.i()
 
For n=2 To Sqr(#MAX)+1 : If P(n) : m=n*n : While m<=#MAX : P(m)=0 : m+n : Wend : EndIf : Next
For i=2 To #MAX : If p(i) : AddElement(Primes()) : Primes()=i : EndIf : Next
 
If FirstElement(Primes())
pp=Primes()
While NextElement(Primes())
ap=Primes()
If NextElement(Primes()) : np=Primes() : Else : Break : EndIf
If ap>(pp+np)/2.0 : AddElement(Strong()) : Strong()=ap : If ap<1000000 : c1+1 : EndIf : EndIf
If ap<(pp+np)/2.0 : AddElement(Weak()) : Weak()=ap : If ap<1000000 : c2+1 : EndIf : EndIf
PreviousElement(Primes()) : pp=Primes()
Wend
EndIf
 
OpenConsole()
If FirstElement(Strong())
PrintN("First 36 strong primes:")
Print(Str(Strong())+" ")
For i=2 To 36 : If NextElement(Strong()) : Print(Str(Strong())+" ") : Else : Break : EndIf : Next
PrintN("")
EndIf
PrintN("Number of strong primes below 1'000'000 = "+FormatNumber(c1,0,".","'"))
PrintN("Number of strong primes below 10'000'000 = "+FormatNumber(ListSize(Strong()),0,".","'"))
If FirstElement(Weak())
PrintN("First 37 weak primes:")
Print(Str(Weak())+" ")
For i=2 To 37 : If NextElement(Weak()) : Print(Str(Weak())+" ") : Else : Break : EndIf : Next
PrintN("")
EndIf
PrintN("Number of weak primes below 1'000'000 = "+FormatNumber(c2,0,".","'"))
PrintN("Number of weak primes below 10'000'000 = "+FormatNumber(ListSize(Weak()),0,".","'"))
Input()</lang>
{{out}}
<pre>First 36 strong primes:
11 17 29 37 41 59 67 71 79 97 101 107 127 137 149 163 179 191 197 223 227 239 251 269 277 281 307 311 331 347 367 379 397 419 431 439
Number of strong primes below 1'000'000 = 37'723
Number of strong primes below 10'000'000 = 320'991
First 37 weak primes:
3 7 13 19 23 31 43 47 61 73 83 89 103 109 113 131 139 151 167 181 193 199 229 233 241 271 283 293 313 317 337 349 353 359 383 389 401
Number of weak primes below 1'000'000 = 37'780
Number of weak primes below 10'000'000 = 321'750
</pre>
 
164

edits