Wilson primes of order n: Difference between revisions
Content added Content deleted
(add gwbasic) |
(Wilson primes of order n in various BASIC dialents) |
||
Line 88: | Line 88: | ||
11: 17 2713 |
11: 17 2713 |
||
</pre> |
</pre> |
||
=={{header|BASIC}}== |
|||
==={{header|BASIC256}}=== |
|||
{{trans|FreeBASIC}} |
|||
<lang BASIC256>function isPrime(v) |
|||
if v <= 1 then return False |
|||
for i = 2 To int(sqr(v)) |
|||
if v % i = 0 then return False |
|||
next i |
|||
return True |
|||
end function |
|||
function isWilson(n, p) |
|||
if p < n then return false |
|||
prod = 1 |
|||
p2 = p*p #p^2 |
|||
for i = 1 to n-1 |
|||
prod = (prod*i) mod p2 |
|||
next i |
|||
for i = 1 to p-n |
|||
prod = (prod*i) mod p2 |
|||
next i |
|||
prod = (p2 + prod - (-1)**n) mod p2 |
|||
if prod = 0 then return true else return false |
|||
end function |
|||
print " n: Wilson primes" |
|||
print "----------------------" |
|||
for n = 1 to 11 |
|||
print n;" : "; |
|||
for p = 3 to 10499 step 2 |
|||
if isPrime(p) and isWilson(n, p) then print p; " "; |
|||
next p |
|||
print |
|||
next n |
|||
end</lang> |
|||
==={{header|QBasic}}=== |
|||
{{works with|QBasic}} |
|||
{{works with|QuickBasic}} |
|||
{{trans|FreeBASIC}} |
|||
<lang QBasic>FUNCTION isPrime (ValorEval) |
|||
IF ValorEval < 2 THEN isPrime = False |
|||
IF ValorEval MOD 2 = 0 THEN isPrime = 2 |
|||
IF ValorEval MOD 3 = 0 THEN isPrime = 3 |
|||
d = 5 |
|||
WHILE d * d <= ValorEval |
|||
IF ValorEval MOD d = 0 THEN isPrime = False ELSE d = d + 2 |
|||
WEND |
|||
isPrime = True |
|||
END FUNCTION |
|||
FUNCTION isWilson (n, p) |
|||
IF p < n THEN isWilson = False |
|||
prod = 1 |
|||
p2 = p ^ 2 |
|||
FOR i = 1 TO n - 1 |
|||
prod = (prod * i) MOD p2 |
|||
NEXT i |
|||
FOR i = 1 TO p - n |
|||
prod = (prod * i) MOD p2 |
|||
NEXT i |
|||
prod = (p2 + prod - (-1) ^ n) MOD p2 |
|||
IF prod = 0 THEN isWilson = True ELSE isWilson = False |
|||
END FUNCTION |
|||
PRINT " n: Wilson primes" |
|||
PRINT "----------------------" |
|||
FOR n = 1 TO 11 |
|||
PRINT USING "##: "; n; |
|||
FOR p = 3 TO 10099 STEP 2 |
|||
If isPrime(p) AND isWilson(n, p) Then Print p; " "; |
|||
NEXT p |
|||
PRINT |
|||
NEXT n |
|||
END</lang> |
|||
==={{header|Yabasic}}=== |
|||
{{trans|FreeBASIC}} |
|||
<lang yabasic>print "n: Wilson primes" |
|||
print "---------------------" |
|||
for n = 1 to 11 |
|||
print n, ":", |
|||
for p = 3 to 10099 step 2 |
|||
if isPrime(p) and isWilson(n, p) then print p, " ", : fi |
|||
next p |
|||
print |
|||
next n |
|||
end |
|||
sub isPrime(v) |
|||
if v < 2 then return False : fi |
|||
if mod(v, 2) = 0 then return v = 2 : fi |
|||
if mod(v, 3) = 0 then return v = 3 : fi |
|||
d = 5 |
|||
while d * d <= v |
|||
if mod(v, d) = 0 then return False else d = d + 2 : fi |
|||
end while |
|||
return True |
|||
end sub |
|||
sub isWilson(n, p) |
|||
if p < n then return False : fi |
|||
prod = 1 |
|||
p2 = p**2 |
|||
for i = 1 to n-1 |
|||
prod = mod((prod*i), p2) |
|||
next i |
|||
for i = 1 to p-n |
|||
prod = mod((prod*i), p2) |
|||
next i |
|||
prod = mod((p2 + prod - (-1)**n), p2) |
|||
if prod = 0 then return True else return False : fi |
|||
end sub</lang> |
|||
=={{header|C++}}== |
=={{header|C++}}== |