Prime Number Digit Frequencies
Today I became curious about the relative frequencies of the digits that appear in prime numbers (in base 10).
Naturally, I wrote a little program to show the answer - digit-freq2:
#!/usr/bin/env perl use strict; use warnings;
use List::Util qw(sum0);
use Math::BigRat;
use Math::Prime::XS qw(primes);
my $min = shift // 10_000;
my $max = shift || 10_000_000;
my @primes = primes( $min, $max );
#warn "$min to $max is ",scalar(@primes)," primes from $primes[0] to $primes[-1]\n";
# Count the number of times a digit is seen
my %digits;
for my $prime ( @primes ) {
my @parts = split //, $prime;
$digits{$_}++ for @parts;
}
# Find the total of all digits seen
my $total = sum0 values %digits;
# Compute the proportional frequencies
for my $digit ( keys %digits ) {
$digits{$digit} = Math::BigRat->new(
Math::BigInt->new($digits{$digit}),
Math::BigInt->new($total)
);
}
# Output the frequencies in sorted order
for my $digit ( sort { $digits{$a} <=> $digits{$b} || $a <=> $b } keys %digits ) {
# print "$digit: ", $digits{$digit}->as_float, "\n";
printf "%d: %.4f\n", $digit, $digits{$digit}->as_float;
}
For primes up to 10 (4 of them) we get this:
2: 0.2500
3: 0.2500
5: 0.2500
7: 0.2500
For primes up to 100 (25) we get:
6: 0.0435
8: 0.0435
2: 0.0652
4: 0.0652
5: 0.0652
9: 0.1304
1: 0.1957
3: 0.1957
7: 0.1957
For primes up to 1,000 (168) we get:
0: 0.0316
8: 0.0632
2: 0.0674
5: 0.0695
6: 0.0695
4: 0.0716
9: 0.1411
3: 0.1579
1: 0.1642
7: 0.1642
At 10,000 (1,229) we get:
0: 0.0492
8: 0.0744
4: 0.0763
5: 0.0763
6: 0.0782
2: 0.0829
9: 0.1369
7: 0.1382
3: 0.1435
1: 0.1443
At 100,000 (9,592) we get:
0: 0.0586
8: 0.0793
6: 0.0804
4: 0.0811
5: 0.0820
2: 0.0839
9: 0.1317
7: 0.1326
3: 0.1339
1: 0.1365
At 1,000,000 (78,498) we get:
0: 0.0660
8: 0.0838
6: 0.0842
5: 0.0846
4: 0.0848
2: 0.0860
9: 0.1264
7: 0.1268
3: 0.1278
1: 0.1296
For an increasing number of primes, the order of increasing frequency appears to stabilize at 0, 8, 6, 5, 4, 2, 9, 7, 3, 1.
So for instance, at 10,000,000 (664,579) we get:
0: 0.0710
8: 0.0864
6: 0.0867
5: 0.0868
4: 0.0871
2: 0.0878
9: 0.1225
7: 0.1228
3: 0.1238
1: 0.1250
For primes between 1,000,000 and 1,000,000,000 we get the same frequency order.
Fascinating.
(This link seems to indicate otherwise, but I haven't wrapped my head around it yet...)