62 lines
1.4 KiB
Text
62 lines
1.4 KiB
Text
10 REM Brazilian numbers
|
|
20 PRINT "First 20 Brazilian numbers:"
|
|
30 C=0:N=7
|
|
40 IF C>=20 THEN 90
|
|
50 GOSUB 320
|
|
60 IF BR THEN PRINT N;:C=C+1
|
|
70 N=N+1
|
|
80 GOTO 40
|
|
90 PRINT:PRINT
|
|
100 PRINT "First 20 odd Brazilian numbers:"
|
|
110 C=0:N=7
|
|
120 IF C>=20 THEN 170
|
|
130 GOSUB 320
|
|
140 IF BR THEN PRINT N;:C=C+1
|
|
150 N=N+2
|
|
160 GOTO 120
|
|
170 PRINT:PRINT
|
|
180 PRINT "First 12 prime Brazilian numbers:"
|
|
190 C=0:N=7
|
|
200 IF C>=12 THEN 270
|
|
210 GOSUB 320
|
|
220 IF BR THEN PRINT N;:C=C+1
|
|
230 N=N+2
|
|
240 GOSUB 530
|
|
250 IF NOT PRM THEN 230
|
|
260 GOTO 200
|
|
270 PRINT
|
|
280 END
|
|
290 REM ** Is Brazilian?
|
|
300 REM Result: BR=-1 if N is Brazilian
|
|
310 REM 0 otherwise
|
|
320 IF N<7 THEN BR=0:RETURN
|
|
330 IF INT(N/2)*2=N AND N>=8 THEN BR=-1:RETURN
|
|
340 FOR B=2 TO N-2
|
|
350 GOSUB 430
|
|
360 IF SMD THEN BR=-1:RETURN
|
|
370 NEXT B
|
|
380 BR=0
|
|
390 RETURN
|
|
400 REM ** Same digits?
|
|
410 REM Result: SMD=-1 if N has same digits in B,
|
|
420 REM 0 otherwise
|
|
430 NL=N:REM "Local" N
|
|
440 NDB=INT(NL/B)
|
|
450 F=NL-NDB*B
|
|
460 NL=NDB:NDB=INT(NL/B)
|
|
470 IF NL<=0 THEN SMD=-1:RETURN
|
|
480 IF NL-NDB*B<>F THEN SMD=0:RETURN
|
|
490 NL=INT(NL/B):NDB=INT(NL/B)
|
|
500 GOTO 470
|
|
510 REM ** Is prime?
|
|
520 REM Result: PRM=-1 if N prime, 0 otherwise
|
|
530 IF N<2 THEN PRM=0:RETURN
|
|
540 IF INT(N/2)*2=N THEN PRM=N=2:RETURN
|
|
550 IF INT(N/3)*3=N THEN PRM=N=3:RETURN
|
|
560 D=5
|
|
570 IF D*D>N THEN PRM=-1:RETURN
|
|
580 IF INT(N/D)*D=N THEN PRM=0:RETURN
|
|
590 D=D+2
|
|
600 IF INT(N/D)*D=N THEN PRM=0:RETURN
|
|
610 D=D+4
|
|
620 GOTO 570
|