Sequence of primes by trial division: Difference between revisions

m
No edit summary
m (→‎{{header|Wren}}: Minor tidy)
 
(8 intermediate revisions by 7 users not shown)
Line 275:
10: 29
</pre>
=={{header|ARM Assembly}}==
{{works with|as|Raspberry Pi <br> or android 32 bits with application Termux}}
<syntaxhighlight lang ARM Assembly>
/* ARM assembly Raspberry PI */
/* program trialprime.s */
 
/************************************/
/* Constantes */
/************************************/
/* for this file see task include a file in language ARM assembly*/
.include "../constantes.inc"
 
//.include "../../ficmacros32.inc" @ for debugging developper
/************************************/
/* Initialized data */
/************************************/
.data
szMessPrime: .asciz " is prime.\n"
szMessNotPrime: .asciz " is not prime.\n"
szCarriageReturn: .asciz "\n"
szMessStart: .asciz "Program 32 bits start.\n"
/************************************/
/* UnInitialized data */
/************************************/
.bss
sZoneConv: .skip 24
/************************************/
/* code section */
/************************************/
.text
.global main
main: @ entry of program
ldr r0,iAdrszMessStart
bl affichageMess
ldr r4,iStart @ start number
ldr r5,iLimit @ end number
tst r4,#1
addeq r4,#1
1:
mov r0,r4
ldr r1,iAdrsZoneConv
bl conversion10 @ decimal conversion
ldr r0,iAdrsZoneConv
bl affichageMess
mov r0,r4
bl isPrime
cmp r0,#0
beq 2f
ldr r0,iAdrszMessPrime
bl affichageMess
b 3f
2:
ldr r0,iAdrszMessNotPrime
bl affichageMess
3:
add r4,r4,#2
cmp r4,r5
blt 1b
100: @ standard end of the program
mov r0, #0 @ return code
mov r7, #EXIT @ request to exit program
swi 0 @ perform the system call
iAdrsZoneConv: .int sZoneConv
iAdrszMessPrime: .int szMessPrime
iAdrszMessNotPrime: .int szMessNotPrime
iAdrszCarriageReturn: .int szCarriageReturn
iAdrszMessStart: .int szMessStart
iStart: .int 4000000000
iLimit: .int 4000000020
/******************************************************************/
/* test if number is prime */
/******************************************************************/
/* r0 contains the number */
/* r0 return 1 if prime else return 0 */
isPrime:
push {r4,lr} @ save registers
cmp r0,#1 @ <= 1 ?
movls r0,#0 @ not prime
bls 100f
cmp r0,#3 @ 2 and 3 prime
movls r0,#1
bls 100f
tst r0,#1 @ even ?
moveq r0,#0 @ not prime
beq 100f
mov r4,r0 @ save number
mov r1,#3 @ first divisor
1:
mov r0,r4 @ number
bl division
add r1,r1,#2 @ increment divisor
cmp r3,#0 @ remainder = zero ?
moveq r0,#0 @ not prime
beq 100f
cmp r1,r2 @ divisors<=quotient ?
ble 1b @ loop
mov r0,#1 @ return prime
 
100:
pop {r4,pc} @ restaur registers
/***************************************************/
/* ROUTINES INCLUDE */
/***************************************************/
/* for this file see task include a file in language ARM assembly*/
.include "../affichage.inc"
</syntaxhighlight>
{{Out}}
<pre>
Program 32 bits start.
4000000001 is not prime.
4000000003 is not prime.
4000000005 is not prime.
4000000007 is prime.
4000000009 is prime.
4000000011 is not prime.
4000000013 is not prime.
4000000015 is not prime.
4000000017 is not prime.
4000000019 is prime.
</pre>
=={{header|Arturo}}==
 
Line 827 ⟶ 947:
=={{header|EasyLang}}==
<syntaxhighlight lang="easylang">
func isPrimeprime num . result$n .
if numn <mod 2 = 0 and n > 2
result$return = "false"0
break 1
.
i = 3
if num mod 2 = 0 and num > 2
while i <= result$ =sqrt "false"n
breakif 1n mod i = 0
return 0
.
for i = 3 to sqrt num
if num mod i = 0
result$ = "false"
break 2
.
i += 2
.
result$return = "true"1
.
funcproc primeSequenceprimeSequ first last . sequencesequ[] .
for i = first to last
callif isPrimeprime i result$= 1
if result$ sequ[] &= "true"i
sequence[] &= i
.
.
.
primeSequ 2 100 seq[]
print seq[]
</syntaxhighlight>
 
Line 1,202 ⟶ 1,319:
 
=={{header|Elena}}==
ELENA 46.x :
<syntaxhighlight lang="elena">import extensions;
import system'routines;
Line 1,208 ⟶ 1,325:
isPrime =
(n => new Range(2,(n.sqrt() - 1).RoundedInt).allMatchedBy::(i => n.mod:(i) != 0));
Primes =
(n => new Range(2, n - 2).filterBy:(isPrime));
public program()
Line 2,197 ⟶ 2,314:
inventory Known1=2@, 3@
Global IsPrime=lambda Known1 (x as decimal) -> {
=false
=0=1
if exist(Known1, x) then =1=1true : exit
if x<=5 OR frac(x) then {if x == 2 OR x == 3 OR x == 5 then Append Known1, x : =1=1true
Break}
if frac(x/2) else exit
if frac(x/3) else exit
x1=sqrt(x):d = 5@
do
{if frac(x/d ) else exit
if frac(x/d) else exit
d += 2: if d>x1 then Append Known1, x : =1=1 : exit
d += 2: if d>x1 then Append Known1, x : =true if frac(x/d) else: exit
d += 4: if frac(x/d<= x1) else Append Known1, x : =1=1: exit
d += 4: if d<= x1 else Append Known1, x : =true: exit
loop}
always
}
takePrimes=lambda IsPrime, i=2 (n)-> {
Line 2,216 ⟶ 2,334:
=array([])
}
Reportreport "["+takePrimes(10)#str$(", ")+"]"
m=takePrimes(90) // skip 90 primes
Reportreport "["+takePrimes(100)#str$(", ")+"]"
}
primes_by_trial_division
Line 2,227 ⟶ 2,345:
[547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223]
</pre>
 
 
 
=={{header|Mathematica}} / {{header|Wolfram Language}}==
Line 2,921 ⟶ 3,037:
return true
</syntaxhighlight>
 
=={{header|RPL}}==
<code>PRIM?</code> is defined at [[Primality by trial division#RPL|Primality by trial division]]
≪ { } 2 ROT '''FOR''' n
'''IF''' n <span style="color:blue">PRIM?</span> THEN n + '''END'''
'''NEXT'''
≫ '<span style="color:blue">PRIMES</span>' STO
 
50 <span style="color:blue">PRIMES</span>
{{out}}
<pre>
1: { 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 }
</pre>
 
=={{header|Ruby}}==
Line 3,172 ⟶ 3,301:
templates ifPrime
def n: $;
[2..~$n -> $n ~/ $ *mod $] -> \(<~[<=$n0>]> $n ! \)!
end ifPrime
 
Line 3,258 ⟶ 3,387:
 
0 OK, 0:136</pre>
 
=={{header|V (Vlang)}}==
<syntaxhighlight lang="Vlang">
import math
 
fn main() {
for idx in 1..101 {if is_prime(idx) {println("${idx}")}}
}
 
fn is_prime(num int) bool {
if num < 2 {return false}
if num < 4 {return true}
if num % 2 == 0 {return false}
for idx := 3; idx <= math.sqrt(num); idx += 2 {
if num % idx == 0 {return false}
}
return true
}
</syntaxhighlight>
 
=={{header|Wren}}==
{{libheader|Wren-fmt}}
Using a simple generator.
<syntaxhighlight lang="ecmascriptwren">import "./fmt" for Fmt
 
var primeSeq = Fiber.new {
9,476

edits