#!/usr/bin/perl -w
#
# Calculate Buenos Aires constant - https://youtu.be/_gCKX6VMvmU
# Average of non-dividing primes method
# (C)Nov 26 2020 Pegasus Epsilon - Educational Purposes Only
use strict;
use Math::BigFloat;
use v5.10;
@_ = map { chomp; $_ } <DATA>;
close DATA;
my ($n,$sum,$count) = $_[$#_] =~ /(.*),(.*),(.*)/;
@_ = map { (/([^,]*),/)[0] } @_;
open my $data, '>>', $0;
select(((select $data), $| = 1)[0]);
for (;;) {
$n++;
my $sqrt = sqrt($n);
foreach my $d (@_) {
next unless $n % $d;
$sum += $d;
$count++;
my $q = Math::BigFloat->new($sum);
say "$n: ".$q->fdiv($count, 2 * length($sum)) if 0 == $n % 10000;
last;
}
unless ($sqrt == int($sqrt)) {
foreach my $d (@_) {
last if 0 == $n % $d;
next if $sqrt > $d;
say $data "$n,$sum,$count";
push @_, $n;
last;
}
}
}
__DATA__
2,5,2