Primality by trial division: Difference between revisions

Content added Content deleted
(→‎{{header|BASIC}}: Replaced defective example: always returned true, didn't handle 3)
Line 74: Line 74:
{{works with|QuickBasic|4.5}}
{{works with|QuickBasic|4.5}}


Going with the classic 1 for "true" and 0 for "false":
Returns 1 for prime, 0 for non-prime
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 BASIC>FUNCTION prime% (n!)
STATIC i AS INTEGER
IF n = 2 OR n = 3 THEN
prime = 1
ELSEIF n <= 1 OR n MOD 2 = 0 THEN
prime = 0
ELSE
prime = 1
FOR i = 3 TO INT(SQR(n)) STEP 2
IF n MOD i = 0 THEN
prime = 0
EXIT FUNCTION
END IF
NEXT i
END IF
END FUNCTION

' Test and display primes 1 .. 50
DECLARE FUNCTION prime% (n!)
FOR n = 1 TO 50
IF prime(n) = 1 THEN PRINT n;
NEXT n</lang>

Output:
<pre> 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47</pre>


=={{header|C}}==
=={{header|C}}==