Primality by trial division: Difference between revisions

Content added Content deleted
(Added Kotlin)
Line 25:
*   [[sequence of primes by Trial Division]]
<br><br>
 
=={{header|360 Assembly}}==
<lang 360asm>* Primality by trial division 26/03/2017
PRIMEDIV CSECT
USING PRIMEDIV,R13 base register
B 72(R15) skip savearea
DC 17F'0' savearea
STM R14,R12,12(R13) save previous context
ST R13,4(R15) link backward
ST R15,8(R13) link forward
LR R13,R15 set addressability
LA R10,PG pgi=0
LA R6,1 i=1
DO WHILE=(C,R6,LE,=F'50') do i=1 to 50
LR R1,R6 i
BAL R14,ISPRIME call isprime(i)
IF C,R0,EQ,=F'1' THEN if isprime(i) then
XDECO R6,XDEC edit i
MVC 0(4,R10),XDEC+8 output i
LA R10,4(R10) pgi+=4
ENDIF , endif
LA R6,1(R6) i++
ENDDO , enddo i
XPRNT PG,L'PG print buffer
L R13,4(0,R13) restore previous savearea pointer
LM R14,R12,12(R13) restore previous context
XR R15,R15 rc=0
BR R14 exit
*------- ---- ----------------------------------------
ISPRIME EQU * function isprime(n)
IF C,R1,LE,=F'1' THEN if n<=1 then
LA R0,0 return(0)
BR R14 return
ENDIF , endif
IF C,R1,EQ,=F'2' THEN if n=2 then
LA R0,1 return(1)
BR R14 return
ENDIF , endif
LR R4,R1 n
N R4,=X'00000001' n and 1
IF LTR,R4,Z,R4 THEN if mod(n,2)=0 then
LA R0,0 return(0)
BR R14 return
ENDIF , endif
LA R7,3 j=3
LA R5,9 r5=j*j
DO WHILE=(CR,R5,LE,R1) do j=3 by 2 while j*j<=n
LR R4,R1 n
SRDA R4,32 ~
DR R4,R7 /j
IF LTR,R4,Z,R4 THEN if mod(n,j)=0 then
LA R0,0 return(0)
BR R14 return
ENDIF , endif
LA R7,2(R7) j+=2
LR R5,R7 j
MR R4,R7 r5=j*j
ENDDO , enddo j
LA R0,1 return(1)
BR R14 return
*------- ---- ----------------------------------------
PG DC CL80' ' buffer
XDEC DS CL12 temp for xdeco
YREGS
END PRIMEDIV</lang>
{{out}}
<pre>
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
</pre>
 
 
=={{header|ABAP}}==