Semiprime: Difference between revisions

1,381 bytes added ,  8 years ago
Added Algol 68
(Added Elixir)
(Added Algol 68)
Line 53:
1680 = 2 * 2 * 2 * 2 * 3 * 5 * 7,
so the result printed is actually correct.
 
=={{header|ALGOL 68}}==
<lang algol68># returns TRUE if n is semi-prime, FALSE otherwise #
# n is semi prime if it has exactly two prime factors #
PROC is semiprime = ( INT n )BOOL:
BEGIN
# We only need to consider factors between 2 and #
# sqrt( n ) inclusive. If there is only one of these #
# then it must be a prime factor and so the number #
# is semi prime #
INT factor count := 0;
FOR factor FROM 2 TO ENTIER sqrt( ABS n )
WHILE IF n MOD factor = 0 THEN
factor count +:= 1
FI;
factor count < 2
DO SKIP OD;
factor count = 1
END # is semiprime # ;
 
# determine the first few semi primes #
print( ( "semi primes below 100: " ) );
FOR i TO 99 DO
IF is semi prime( i ) THEN print( ( whole( i, 0 ), " " ) ) FI
OD;
print( ( newline ) );
print( ( "semi primes below between 1670 and 1690: " ) );
FOR i FROM 1670 TO 1690 DO
IF is semi prime( i ) THEN print( ( whole( i, 0 ), " " ) ) FI
OD;
print( ( newline ) )</lang>
{{out}}
<pre>
semi primes below 100: 4 6 8 9 10 14 15 21 22 25 26 27 33 34 35 38 39 46 49 51 55 57 58 62 65 69 74 77 82 85 86 87 91 93 94 95
semi primes below between 1670 and 1690: 1671 1673 1678 1679 1681 1685 1687 1689
</pre>
 
=={{header|AutoHotkey}}==
3,028

edits