# ETOOBUSY ðŸš€ minimal blogging for the impatient

# PWC198 - Prime Count

**TL;DR**

On with TASK #2 from The Weekly Challenge #198. Enjoy!

# The challenge

You are given an integer

`$n > 0`

.Write a script to print the count of primes less than

`$n`

.

Example 1`Input: $n = 10 Output: 4 as in there are 4 primes less than 10 are 2, 3, 5 ,7.`

Example 2`Input: $n = 15 Output: 6`

Example 3`Input: $n = 1 Output: 0`

Example 4`Input: $n = 25 Output: 9`

# The questions

â€¦ are we allowed to use *modules*?

# The solution

The question, just for a change, is not to nag our fine host Mohammad
S. Anwar. Itâ€™s just that the good old Math::Prime::Util by
Dana Jacobsen contains function `prime_count`

, which needs
*just* a little interface adaptation (i.e. subtracting 1):

```
#!/usr/bin/env perl
use ntheory 'prime_count';
print prime_count(($ARGV[0] // 10) - 1), "\n";
```

Itâ€™s so compact that this time I decided to get rid of all the Perl
programs boilerplate, including the `use v5.24`

(so I had to revert back
to `print`

, as `say`

is not available by default) and `use warnings`

.

To compare and contrast, the Raku alternative is equivalently short.
Iâ€™m not aware of an implementation of `prime_count`

, *but* thereâ€™s a
primality test out of the box and itâ€™s easy to put it at work:

```
#!/usr/bin/env raku
sub prime-count ($n) { (2 ... $n).grep({.is-prime}).elems }
put prime-count((@*ARGS[0] // 10) - 1);
```

I decided to keep the same interface as its Perl counterpart (including the need to subtract 1 before calling it in our case), for consistency.

Iâ€™m not sure how *efficient* this `prime-count`

function is, to be
honest. I tried to sneak a `...`

for lazy list generation, but Iâ€™m not
sure that using `grep`

and *then* counting the objects is the right
approach memory-wise. Maybe something like this is a bit less idiomatic
but also less resource taxing:

```
sub prime-count ($n) {
my $count = 0;
for 2 ... $n -> $k { ++$count if $k.is-prime }
return $count;
}
```

Anyway, the first implementation is OK for little test inputs, so Iâ€™m sticking with it.

Stay safe!

*Comments? Octodon, Twitter, GitHub, Reddit, or drop me a line!*