Semiprime numbers are natural numbers that are products of exactly two (possibly equal) prime numbers.


Semiprimes   are also known as:

   semi-primes
   biprimes
   bi-primes
    2-almost    primes
   or simply:    P2  


Example
 
   1679  =  23 × 73  

(This particular number was chosen as the length of the Arecibo message).



Task

Write a function determining whether a given number is semiprime.



See also

 The Wikipedia article:  semiprime.
 The Wikipedia article:  almost prime.
 The OEIS sequence:  A001358: semiprimes  which has a shorter definition: the product of two primes.


proc isSemiPrime(k: int): bool =
 var
  i = 2
  count = 0
  x = k
 while i <= x and count < 3:
  if x mod i == 0:
   x = x div i
   inc count
  else:
   inc i
 result = count == 2
 
for k in 1675..1680:
 echo k, (if k.isSemiPrime(): " is" else: " isn’t"), " semi-prime"