銅バッハ数(copperbach number)

10 REM 銅バッハ数とはちょうど2通りの異なる方法で2つの素数の和として表わされる整数です。例えば14=7+7=11+3であるから14は銅バッハ数です。
20 REM 銅バッハ数はOEISによると全部で9個のようです。
30 REM !の記号以下は注釈化です。
40 REM 10行目から170行目まで素数の生成と素数の配列yへの格納並びにyの複製zの作成
50 DIM y(2000) !2000は適当です。
60 DIM z(2000)
70 LET s=0
80 LET i=1
90 FOR x=2 TO 2000
100 FOR w=2 TO INT(SQR(x))
110 IF MOD(x,w)=0 THEN EXIT FOR
120 IF MOD(x,w)<>0 THEN LET s=s+1
130 NEXT W
140 ! IF s=INT(SQR(x))-1 THEN PRINT "素数"; x
150 IF s=INT(SQR(x))-1 THEN LET y(i)=x
160 ! IF s=INT(SQR(x))-1 THEN PRINT y(i)
170 IF s=INT(SQR(x))-1 THEN LET i=i+1
180 LET s=0
190 NEXT X
200 REM------------------------------------
210 MAT z=y
220 REM-------以下整数nが銅バッハであるかないか:303という数は適当です。280行と330行の!を除いて実行すると途中経過がわかります。
230 LET count=0
240 FOR n=1 TO 303
250 FOR s=1 TO 303
260 FOR t=1 TO 303
270 IF n=y(s)+z(t) THEN LET count=count+1
280 ! IF n=y(s)+z(t) THEN PRINT "copper bach="; n;"=";y(s);"+";z(t)
290 NEXT T
300 NEXT S
310 IF count=3 OR count=4 THEN PRINT "銅バッハ";n !ちょうど2通りの方法で表す
320 LET count=0
330 ! PRINT "-------------------------------------------------------"
340 NEXT N
350 END

キュバン素数

number-pedia.com

キュバン素数を求めるプログラム。十進BASIC使用。最初の1000個を求めています。

LET s=0
LET t=0
FOR a=1 TO 10000
LET b=3*a^2+3*a+1
FOR c=2 TO INT(SQR(b))
IF MOD(b,c)=0 THEN EXIT FOR
IF MOD(b,c)<>0 THEN LET s=s+1
NEXT C
IF s=INT(SQR(b))-1 THEN LET t=t+1
IF s=INT(SQR(b))-1 THEN PRINT t; b;"prime"
IF t=1000 THEN stop
LET s=0
NEXT A

END

エジプト式分数

REM 有理数モードで実行

REM  エジプト式分数を求めるプログラムです。十進BASIC使用。
INPUT n,m
LET b=n/m

 

LET t=0
DIM a(200)
FOR i=2 TO 100000
LET c=b-1/i
IF c<=0 THEN GOTO 300



LET t=t+1
LET a(t)=1/i
IF numer(c)=1 THEN LET t=t+1
IF numer(c)=1 THEN LET a(t)=c
IF numer(c)=1 THEN GOTO 100

LET b=c
GOTO 300
100

LET f$=""
FOR j=1 TO t
LET f$=f$ & "+" & STR$(a(j))
NEXT J
PRINT f$
STOP





300
NEXT I
END

ズッカーマン数

ja.wikipedia.org

十進basicを使っています

 ズッカーマン数をもとめています。

オプションタブより

microsoft  互換モードで実行

LET s=1
FOR a=1 TO 1000000
LET aa$=STR$(a)

LET b=LEN(aa$)
LET product=1
FOR r=1 TO b
LET product=product*VAL(mid$(aa$,r,1))
NEXT R
WHEN EXCEPTION IN !ここからUSE  END  WHENの間は0除算のための例外処理です。

 


IF MOD(a,product)=0 THEN PRINT s; a
IF MOD(a,product)=0 THEN LET s=s+1
USE
END WHEN

LET product=1
NEXT A


END