Es ist Einfacher im Garten die Wurzeln zu
ziehen, als aus einer Binärzahl.
' Primzahlen 2017 ; 18.01.2018 ff
' FreeBASIC - A multi-platform BASIC Compiler
' FBIde - is a free open source IDE for FreeBasic compiler
Dim ProgrammName As String = "wurzel2hochx02032018mod1414v4.bas"
Dim NameAutor As String="Hans-Peter Kuberna"
Dim XPos As UInteger
Dim YPos As UInteger
Dim BildSchirmXPosition As UByte ' Bildschirm X Position ; Screen X position
Dim BildSchirmYPosition As UByte ' Bildschirm Y Position ; Screen Y position
#include "fbgfx.bi"
#if __FB_LANG__ = "fb"
Using FB '' Screen mode flags are in the FB namespace in lang FB
#endif
' Sets screen mode 18 640x480 mode, 256 colors
' Sets screen mode 19 (800*600, 8bpp)
' Sets screen mode 20 (1024*768, 8bpp)
' Sets screen mode 19 (800*600) 256 colors
Screen 20, 8
' Check to make sure Screen was opened successfully
If ScreenPtr = 0 Then
Print "Error setting video mode!"
End
Else
Print "Successfully set video mode"
'' Sets Black foreground and White background color
End If
Color 0, 15
' Clears the screen to the background color
Cls
Dim BildschirmBreite As Integer, BildschirmHoehe As Integer
Dim depth As Integer
Dim driver_name As String
XPos=BildschirmBreite/2
YPos=BildschirmHoehe/2+50
BildSchirmXPosition=2: BildSchirmYPosition=2
Locate BildSchirmYPosition,BildSchirmXPosition+30
' Obtain info about current mode
ScreenInfo BildschirmBreite, BildschirmHoehe, depth,,,,driver_name
Print Str(BildschirmBreite) + "x" + Str(BildschirmHoehe) + "x" + Str(depth);
Print " using " + driver_name + " driver";
Dim Schwarz AS UByte=0
Dim Gruen AS UByte=2
Dim Rot AS UByte=4
Dim ZahlExponent As ULongInt
Dim ZahlExponentDifferenz As ULongInt
Dim WurzelDifferenz As Double
Dim BasisZahl AS ULongInt
Dim BasisZahlHochX AS ULongInt
Dim BasisZahlHochXp1 AS ULongInt
Dim SqrBasisZahlHochX AS ULongInt
Dim BildSchirmZeileOffset AS UByte
Dim ZahlExponentModBasisZahl As ULongInt
Locate BildSchirmYPosition,BildSchirmXPosition
print Date$,Time$;
Locate BildSchirmYPosition+1,BildSchirmXPosition+76
print ProgrammName;
BildSchirmYPosition=BildSchirmYPosition+1
Locate BildSchirmYPosition,BildSchirmXPosition
print NameAutor;
BildSchirmYPosition=BildSchirmYPosition+13
' ULongInt 0 to 18446744073709551615 20 Ziffern
BildSchirmYPosition=4
BildSchirmXPosition=4
BildSchirmZeileOffset=1
Dim TimerStart As Double
Dim TimerEnd As Double
TimerStart = Timer
BasisZahl=2
ZahlExponent=0
while ZahlExponent<33
ZahlExponentModBasisZahl=ZahlExponent mod BasisZahl
if ZahlExponentModBasisZahl=0 then
BasisZahlHochX=BasisZahl^ZahlExponent
SqrBasisZahlHochX=BasisZahl^{ZahlExponent/2}
WurzelDifferenz=sqr(BasisZahlHochX)
else
BasisZahlHochXp1=BasisZahl^{ZahlExponent+1}
BasisZahlHochX=BasisZahlHochXp1/2
BasisZahlHochXp1=BasisZahl^{(ZahlExponent+1)/2}
SqrBasisZahlHochX=SqrBasisZahlHochX*sqr(2)
' sqr(2)=1,4142135623730950488016887242097
WurzelDifferenz=sqr(BasisZahlHochX)
end if
if SqrBasisZahlHochX>WurzelDifferenz then
color Gruen,15
else
color Rot,15
end if
if SqrBasisZahlHochX=WurzelDifferenz then
color Schwarz,15
end if
Locate BildSchirmYPosition+BildSchirmZeileOffset,BildSchirmXPosition+0
Print Using "####"; BasisZahl;
Locate BildSchirmYPosition+BildSchirmZeileOffset,BildSchirmXPosition+10
Print " ^ "; : Print Using "####"; ZahlExponent; : Print " = ";
Locate BildSchirmYPosition+BildSchirmZeileOffset,BildSchirmXPosition+30
Print Using "####################"; BasisZahlHochX;
Locate BildSchirmYPosition+BildSchirmZeileOffset,BildSchirmXPosition+60
Print Using "####################"; SqrBasisZahlHochX;
Locate BildSchirmYPosition+BildSchirmZeileOffset,BildSchirmXPosition+90
if ZahlExponentModBasisZahl=0 then
Print Using "#####################"; WurzelDifferenz;
else
Print Using "########.############"; WurzelDifferenz;
end if
BildSchirmZeileOffset=BildSchirmZeileOffset+1
ZahlExponent=ZahlExponent+1
wend
TimerEnd = Timer
Locate BildSchirmYPosition+BildSchirmZeileOffset+2,BildSchirmXPosition+6
Print "Rechenzeit =";TimerEnd-TimerStart; " Sekunden"
Dim ProgrammNameBild As Any Ptr
ProgrammNameBild = ImageCreate(BildschirmBreite,BildschirmHoehe)
Get (0, 0) - (BildschirmBreite-1, BildschirmHoehe-1), ProgrammNameBild
Dim dateiname As String
dateiname="wurzel2hochx02032018mod1414v4.bmp"
dateiname=curdir$+"\"+dateiname
BSave( dateiname, ProgrammNameBild )
ImageDestroy ProgrammNameBild
/'
'/
Sleep
End