Carmichael 3 strong pseudoprimes: Difference between revisions
Content added Content deleted
m (added whitespace before the TOC.) |
No edit summary |
||
Line 1,829: | Line 1,829: | ||
61 * 3361 * 4021 = 824389441 |
61 * 3361 * 4021 = 824389441 |
||
</pre> |
</pre> |
||
=={{header|ZX Spectrum Basic}}== |
|||
{{trans|C}} |
|||
<lang zxbasic>10 FOR p=2 TO 61 |
|||
20 LET n=p: GO SUB 1000 |
|||
30 IF NOT n THEN GO TO 200 |
|||
40 FOR h=1 TO p-1 |
|||
50 FOR d=1 TO h-1+p |
|||
60 IF NOT (FN m((h+p)*(p-1),d)=0 AND FN w(-p*p,h)=FN m(d,h)) THEN GO TO 180 |
|||
70 LET q=INT (1+((p-1)*(h+p)/d)) |
|||
80 LET n=q: GO SUB 1000 |
|||
90 IF NOT n THEN GO TO 180 |
|||
100 LET r=INT (1+(p*q/h)) |
|||
110 LET n=r: GO SUB 1000 |
|||
120 IF (NOT n) OR ((FN m((q*r),(p-1))<>1)) THEN GO TO 180 |
|||
130 PRINT p;" ";q;" ";r |
|||
180 NEXT d |
|||
190 NEXT h |
|||
200 NEXT p |
|||
210 STOP |
|||
1000 IF n<4 THEN LET n=(n>1): RETURN |
|||
1010 IF (NOT FN m(n,2)) OR (NOT FN m(n,3)) THEN LET n=0: RETURN |
|||
1020 LET i=5 |
|||
1030 IF NOT ((i*i)<=n) THEN LET n=1: RETURN |
|||
1040 IF (NOT FN m(n,i)) OR NOT FN m(n,(i+2)) THEN LET n=0: RETURN |
|||
1050 LET i=i+6 |
|||
1060 GO TO 1030 |
|||
2000 DEF FN m(a,b)=a-(INT (a/b)*b): REM Mod function |
|||
2010 DEF FN w(a,b)=FN m(FN m(a,b)+b,b): REM Mod function modified |
|||
</lang> |