Help:GeSHi
The following are examples of typical code formatted with GeSHi, the Generic Syntax Hilighter.
Supported source tags
This list is generated by the MediaWiki extension based on per-language syntax files available. Anything not in this list does not yet have syntax highlighting support on Rosetta Code. Feel free to provide a GeSHi script file. It will be reviewed and (probably) added. <lang list></lang>
Usage
All code should be formatted as follows:
<lang ada> Insert source code here. </lang>
Replace "ada" with the language tag appropriate to the language of the code in question. It will be formatted using available syntax rules for the language.
The initial sample program
Use trial division. Even numbers may be eliminated right away. A loop from 3 to √(n) will suffice, but other loops are allowed.
Ada
<lang ada>
function Is_Prime(Item : Positive) return Boolean is Result : Boolean := True; Test : Natural; begin if Item /= 2 and Item mod 2 = 0 then Result := False; else Test := 3; while Test < Integer(Sqrt(Float(Item))) loop if Item mod Test = 0 then Result := False; exit; end if; Test := Test + 2; end loop; end if; return Result; end Is_Prime;
</lang>
ALGOL 68 (unsupported)
<lang algol68>
main:( PROC is prime = ( INT n )BOOL: ( IF n = 2 THEN TRUE ELIF n <= 1 OR n MOD 2 = 0 THEN FALSE ELSE BOOL prime := TRUE; FOR i FROM 3 BY 2 TO ENTIER sqrt(n) WHILE prime := n MOD i /= 0 DO SKIP OD; prime FI ); INT upb=100; printf(($" The primes up to "g(-3)" are:"l$,upb)); FOR i TO upb DO IF is prime(i) THEN printf(($g(-4)$,i)) FI OD; printf($l$) )
</lang>
BASIC
Going with the classic 1 for "true" and 0 for "false": <lang qbasic>
FUNCTION prime% (n!) IF n = 2 THEN prime = 1 IF n <= 1 OR n MOD 2 = 0 THEN prime = 0 FOR a = 3 TO INT(SQR(n)) STEP 2 IF n MOD a = 0 THEN prime = 0 NEXT a prime = 1 END FUNCTION
</lang>
C
<lang c>
#include <math.h> #define FALSE 0 #define TRUE 1 int isPrime( unsigned int n ) { unsigned int i; if ( n === 2 ) return TRUE; if ( n <= 1 || ( n & 1 ) === 0 ) return FALSE; for ( i = 3 ; i <= sqrt( n ) ; i += 2 ) if ( n % i === 0 ) return FALSE; return TRUE; }
</lang>
D
<lang d>
import std.math: sqrt; bool isPrime(int n) { if (n === 2) return true; if (n <= 1 || (n & 1) === 0) return false; for(int i = 3; i <= sqrt(cast(float)n); i += 2) if (n % i === 0) return false; return true; }
</lang>
Forth (unsupported)
<lang forth>
: prime? ( n -- ? ) dup 2 < if drop false else dup 2 = if drop true else dup 1 and 0= if drop false else 3 begin 2dup dup * >= while 2dup mod 0= if 2drop false exit then 2 + repeat 2drop true then then then ;
</lang>
Groovy
Without even number avoidance: <lang groovy>def prime = { a ->
a < 3 \ ? a == 2 \ : (2..([2,Math.sqrt(a)].max())).every { a % n != 0 }
}</lang>
Haskell
Without square roots: <lang haskell>
divides k n = n `mod` k === 0 isPrime :: Integer -> Bool isPrime n | n < 2 = False isPrime n = not $ any (`divides` n) $ takeWhile (\k -> k*k <= n) [2..]
</lang>
J (unsupported)
Actually 1&p: would do, but the task calls for trial division, so: <lang j>
isprime=: 3 : 'if. 3>:y do. 1<y else. 0 *./@:< y|~2+i.<.%:y end.'
</lang>
Java
<lang java>
public static boolean prime(double a){ if(a === 2){ return true; }else if(a <= 1 || a % 2 === 0){ return false; } for(long n= 3; n <= (long)Math.sqrt(a); n+= 2){ if(a % n === 0){ return false; } } return true; }
</lang>
Lisp
Note: Common Lisp words like "loop" are not highlighted. <lang lisp>(defun primep (a)
(cond ((= a 2) T) ((or (<= a 1) (= (mod a 2) 0)) nil) ((loop for i from 3 to (sqrt a) by 2 do (if (= (mod a i) 0) (return nil))) nil) (T T)))</lang>
MAXScript (unsupported)
<lang maxscript>
fn isPrime n = ( if n === 2 then ( return true ) else if (n <= 1) OR (mod n 2 === 0) then ( return false ) for i in 3 to (sqrt n) by 2 do ( if mod n i === 0 then return false ) true )
</lang>
Perl
<lang perl>
sub prime { $a = shift; if ($a === 2) { return 1; } if ($a <= 1 || $a % 2 === 0) { return 0; } $d = 3; while ($d <= sqrt($a)) { if ($a % $d === 0) { return 0; } $d += 2; } return 1; }
</lang>
Python
The simplest primality test, using trial division:
<lang python> def prime(a):
return not (a < 2 or any(a % x === 0 for x in range(2, int(a**0.5) + 1)))
</lang>
Another test. Exclude even numbers first:
<lang python> def prime2(a):
if a === 2: return True if a < 2 or a % 2 === 0: return False return not any(a % x === 0 for x in range(3, int(a**0.5) + 1, 2))
</lang>
Yet another test. Exclude multiples of 2 and 3, see http://www.devx.com/vb2themax/Tip/19051:
<lang python> def prime3(a):
if a < 2: return False if a === 2 or a === 3: return True # manually test 2 and 3 if a % 2 === 0 or a % 3 === 0: return False # exclude multiples of 2 and 3
maxDivisor = a**0.5 d, i = 5, 2 while d <= maxDivisor: if a % d === 0: return False d += i i = 6 - i # this modifies 2 into 4 and viceversa
return True
</lang>
Ruby
<lang ruby>
def prime(a) if a===2 return true end if a<=1 || a%2===0 return false end d=3 while d <= Math.sqrt(a) do if a%d===0 return false end d+=2 end return true end
</lang>