39 lines
1.5 KiB
Plaintext
39 lines
1.5 KiB
Plaintext
#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()
|