Help:GeSHi: Difference between revisions
(Fixed everything.) |
(We don't want this page showing up in category pages so we're using regular links) |
||
Line 19: | Line 19: | ||
Use trial division. Even numbers may be eliminated right away. A loop from 3 to √(n) will suffice, but other loops are allowed. |
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> |
<lang ada> |
||
function Is_Prime(Item : Positive) return Boolean is |
function Is_Prime(Item : Positive) return Boolean is |
||
Line 41: | Line 41: | ||
</lang> |
</lang> |
||
=== |
===[[ALGOL 68]] (unsupported)=== |
||
<lang algol68> |
<lang algol68> |
||
main:( |
main:( |
||
Line 68: | Line 68: | ||
printf($l$) |
printf($l$) |
||
) |
) |
||
Output: |
|||
</lang> |
</lang> |
||
The primes up to 100 are: |
|||
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 |
|||
==={{header|BASIC}}=== |
==={{header|BASIC}}=== |
||
Line 103: | Line 106: | ||
</lang> |
</lang> |
||
=== |
===[[Lisp]]=== |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
===[[D]]=== |
|||
<lang d> |
<lang d> |
||
import std.math: sqrt; |
import std.math: sqrt; |
||
Line 119: | Line 132: | ||
</lang> |
</lang> |
||
=== |
===[[Forth]] (unsupported)=== |
||
<lang forth> |
<lang forth> |
||
: prime? ( n -- ? ) |
: prime? ( n -- ? ) |
||
Line 134: | Line 147: | ||
</lang> |
</lang> |
||
=== |
===[[Haskell]]=== |
||
Without square roots: |
Without square roots: |
||
Line 145: | Line 158: | ||
</lang> |
</lang> |
||
=== |
===[[J]] (unsupported)=== |
||
Actually <tt>1&p:</tt> would do, but the task calls for trial division, so: |
Actually <tt>1&p:</tt> would do, but the task calls for trial division, so: |
||
Line 152: | Line 165: | ||
</lang> |
</lang> |
||
=== |
===[[Java]]=== |
||
<lang java> |
<lang java> |
||
public static boolean prime(double a){ |
public static boolean prime(double a){ |
||
Line 167: | Line 180: | ||
</lang> |
</lang> |
||
⚫ | |||
==={{header|Lisp}}=== |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
<lang maxscript> |
<lang maxscript> |
||
fn isPrime n = |
fn isPrime n = |
||
Line 197: | Line 200: | ||
) |
) |
||
</lang> |
</lang> |
||
⚫ | |||
⚫ | |||
<lang perl> |
<lang perl> |
||
sub prime { |
sub prime { |
||
Line 219: | Line 221: | ||
</lang> |
</lang> |
||
=== |
===[[Python]]=== |
||
''Ugh. Who chose these colors? --[[User:IanOsgood|IanOsgood]] 09:20, 25 February 2008 (MST)'' |
|||
The simplest primality test, using trial division: |
The simplest primality test, using trial division: |
||
Line 256: | Line 260: | ||
</lang> |
</lang> |
||
=== |
===[[Ruby]]=== |
||
<lang ruby> |
<lang ruby> |
||
def prime(a) |
def prime(a) |
Revision as of 18:19, 13 February 2009
The following are examples of typical code formated 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$) )
Output: </lang>
The primes up to 100 are: 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
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>
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>
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>
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>
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
Ugh. Who chose these colors? --IanOsgood 09:20, 25 February 2008 (MST)
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>