From 39682c26319bf11bd3ea14efdc4e0cd7b9b78d34 Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Sun, 19 Jun 2022 22:31:17 +0000 Subject: w169 - Task 1 (Didn't have time for task 2) --- challenge-169/perlboy1967/perl/ch-1.pl | 51 ++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 challenge-169/perlboy1967/perl/ch-1.pl diff --git a/challenge-169/perlboy1967/perl/ch-1.pl b/challenge-169/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..abbee6d5bc --- /dev/null +++ b/challenge-169/perlboy1967/perl/ch-1.pl @@ -0,0 +1,51 @@ +#!/bin/perl + +=pod + +The Weekly Challenge - 169 + - https://theweeklychallenge.org/blog/perl-weekly-challenge-169/#TASK1 + +Author: Niels 'PerlBoy' van Dijke + +Task 1: Brilliant Numbers +Submitted by: Mohammad S Anwar + +Write a script to generate first 20 Brilliant Numbers. + + || Brilliant numbers are numbers with two prime factors of the same length. + +The number should have exactly two prime factors, i.e. it’s the product of two +primes of the same length. + +=cut + +use v5.16; +use warnings; + +use Math::Factor::XS qw(prime_factors); + +# Prototype(s) +sub isBrilliantNumber($\@); + +my ($n,$b,@f) = (0,1); + +while ($n < 20) { + if (isBrilliantNumber($b,@f)) { + printf "%s => (%s)\n", $b, join(',',@f); + $n++; + } + $b++; +} + + +sub isBrilliantNumber($\@) { + my ($n,$arF) = @_; + + my @f = prime_factors($n); + if (scalar @f == 2 && length($f[0]) == length($f[1])) { + @$arF = @f; + return 1; + } + + return 0; +} -- cgit