Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -0,0 +1,21 @@
|
|||
PROGRAM PRIME_TRIAL
|
||||
|
||||
PROCEDURE ISPRIME(N%->OK%)
|
||||
LOCAL T%
|
||||
IF N%<=1 THEN OK%=FALSE EXIT PROCEDURE END IF
|
||||
IF N%<=3 THEN OK%=TRUE EXIT PROCEDURE END IF
|
||||
IF (N% AND 1)=0 THEN OK%=FALSE EXIT PROCEDURE END IF
|
||||
FOR T%=3 TO SQR(N%) STEP 2 DO
|
||||
IF N% MOD T%=0 THEN OK%=FALSE EXIT PROCEDURE END IF
|
||||
END FOR
|
||||
OK%=TRUE
|
||||
END PROCEDURE
|
||||
|
||||
BEGIN
|
||||
|
||||
FOR I%=1 TO 100 DO
|
||||
ISPRIME(I%->OK%)
|
||||
IF OK% THEN PRINT(i%;"is prime") END IF
|
||||
END FOR
|
||||
|
||||
END PROGRAM
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
(lib 'sequences)
|
||||
|
||||
;; Try divisors iff n = 2k + 1
|
||||
(define (is-prime? p)
|
||||
(cond
|
||||
[(< p 2) #f]
|
||||
[(zero? (modulo p 2)) (= p 2)]
|
||||
[else
|
||||
(for/and ((d [3 5 .. (1+ (sqrt p))] )) (!zero? (modulo p d)))]))
|
||||
|
||||
(filter is-prime? (range 1 100))
|
||||
→ (2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97)
|
||||
|
||||
;; Improve performance , try divisors iff n = 6k+1 or n = 6k+5
|
||||
(define (is-prime? p)
|
||||
(cond
|
||||
[(< p 2) #f]
|
||||
[(zero? (modulo p 2)) (= p 2)]
|
||||
[(zero? (modulo p 3)) (= p 3)]
|
||||
[(zero? (modulo p 5)) (= p 5)]
|
||||
[else ;; step 6 : try divisors 6n+1 or 6n+5
|
||||
(for ((d [7 13 .. (1+ (sqrt p))] ))
|
||||
#:break (zero? (modulo p d)) => #f
|
||||
#:break (zero? (modulo p (+ d 4))) => #f
|
||||
#t )]))
|
||||
|
||||
(filter is-prime? (range 1 100))
|
||||
→ (2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97)
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
' FB 1.05.0 Win64
|
||||
|
||||
Function isPrime(n As Integer) As Boolean
|
||||
If n < 2 Then Return False
|
||||
If n = 2 Then Return True
|
||||
If n Mod 2 = 0 Then Return False
|
||||
Dim limit As Integer = Sqr(n)
|
||||
For i As Integer = 3 To limit Step 2
|
||||
If n Mod i = 0 Then Return False
|
||||
Next
|
||||
Return True
|
||||
End Function
|
||||
|
||||
' To test this works, print all primes under 100
|
||||
For i As Integer = 1 To 99
|
||||
If isPrime(i) Then
|
||||
Print Str(i); " ";
|
||||
End If
|
||||
Next
|
||||
|
||||
Print : Print
|
||||
Print "Press any key to quit"
|
||||
Sleep
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
import math.sqrt
|
||||
|
||||
def
|
||||
isPrime( 2 ) = true
|
||||
isPrime( n )
|
||||
| n < 3 or 2|n = false
|
||||
| otherwise = (3..int(sqrt(n)) by 2).forall( (/|n) )
|
||||
|
||||
(10^10..10^10+50).filter( isPrime ).foreach( println )
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
include "ConsoleWindow"
|
||||
|
||||
def tab 6
|
||||
|
||||
local fn isPrime( n as long ) as Boolean
|
||||
dim as long i
|
||||
dim as Boolean result
|
||||
|
||||
if n < 2 then result = _false : exit fn
|
||||
if n = 2 then result = _true : exit fn
|
||||
if n mod 2 == 0 then result = _false : exit fn
|
||||
result = _true
|
||||
for i = 3 to int( n^.5 ) step 2
|
||||
if n mod i == 0 then result = _false : exit fn
|
||||
next i
|
||||
end fn = result
|
||||
|
||||
dim as long i, j
|
||||
|
||||
print "Prime numbers between 0 and 1000:"
|
||||
for i = 0 to 1000
|
||||
if ( fn isPrime(i) != _false )
|
||||
print i, : j++
|
||||
if j mod 10 == 0 then print
|
||||
end if
|
||||
next
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
import sequtils, math
|
||||
|
||||
proc prime(a: int): bool =
|
||||
if a == 2: return true
|
||||
if a < 2 or a mod 2 == 0: return false
|
||||
for i in countup(3, sqrt(a.float).int, 2):
|
||||
if a mod i == 0:
|
||||
return false
|
||||
return true
|
||||
|
||||
template any(sequence, operation: expr): expr =
|
||||
var result {.gensym.}: bool = false
|
||||
for i in 0 .. <sequence.len:
|
||||
let it {.inject.} = sequence[i]
|
||||
result = operation
|
||||
if result:
|
||||
break
|
||||
result
|
||||
|
||||
proc prime2(a: int): bool =
|
||||
result = not (a < 2 or any(toSeq(2 .. sqrt(a.float).int), a mod it == 0))
|
||||
|
||||
proc prime3(a: int): bool =
|
||||
if a == 2: return true
|
||||
if a < 2 or a mod 2 == 0: return false
|
||||
return not any(toSeq countup(3, sqrt(a.float).int, 2), a mod it == 0)
|
||||
|
||||
for i in 2..30:
|
||||
echo i, " ", prime(i)
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
Integer method: isPrime
|
||||
| i |
|
||||
self 1 <= ifTrue: [ false return ]
|
||||
self 3 <= ifTrue: [ true return ]
|
||||
self isEven ifTrue: [ false return ]
|
||||
3 self sqrt asInteger for: i [ self i mod ifzero: [ false return ] ]
|
||||
true ;
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
fun prime(p) type integer->integer
|
||||
p.gt(1) where q=p.sqrt NO(p.mod(2..q)==0)
|
||||
|
||||
1..100.prime
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
function is_prime(integer n)
|
||||
if n<2 then return 0 end if
|
||||
if n=2 then return 1 end if
|
||||
if remainder(n,2)=0 then return 0 end if
|
||||
for i=3 to floor(sqrt(n)) by 2 do
|
||||
if remainder(n,i)=0 then
|
||||
return 0
|
||||
end if
|
||||
end for
|
||||
return 1
|
||||
end function
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
give n
|
||||
flag = isPrime(n)
|
||||
if flag = 1 see n + " is a prime number"
|
||||
else see n + " is not a prime number" ok
|
||||
|
||||
func isPrime num
|
||||
if (num <= 1) return 0 ok
|
||||
if (num % 2 = 0 and num != 2) return 0 ok
|
||||
for i = 3 to floor(num / 2) -1 step 2
|
||||
if (num % i = 0) return 0 ok
|
||||
next
|
||||
return 1
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
func is_prime(a) {
|
||||
given (a) {
|
||||
when (2) { true }
|
||||
case (a <= 1 || a.is_even) { false }
|
||||
default { 3 .. a.isqrt -> any { .divides(a) } -> not }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
import Foundation
|
||||
|
||||
extension Int {
|
||||
func isPrime() -> Bool {
|
||||
|
||||
switch self {
|
||||
case let x where x < 2:
|
||||
return false
|
||||
case 2:
|
||||
return true
|
||||
default:
|
||||
return
|
||||
self % 2 != 0 &&
|
||||
!stride(from: 3, through: Int(sqrt(Double(self))), by: 2).contains {self % $0 == 0}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue