Jason (jcreed) wrote,
Jason
jcreed

Man so I was reading a little bit about Reed-Solomon codes and got sidetracked into reading some remedial stuff about finite field theory [pdf link] and that is some really crazy stuff, you know? It makes me really feel like Not a Real Mathematician that I still know so little about it. But I guess there's a lot of simple-looking things about the subject that are nonetheless deep, and which nobody really knows a full explanation of.

Like, I accepted long ago that the distribution of primes themselves was sort of random, even as abhorrent as it feels to accept that some random bullshit arises out of such a simple definition (and it's not even pretty random bullshit in the same sense as the mandelbrot set arising out of just z2 + c). But the distribution of which numbers are primitive roots in Z/(p)?

roots


Just looks like a bunch of garbage, with the exception of vertical white stripes because perfect squares can't be primitive roots. X-axis is natural numbers n, Y-axis is primes p, and the coloration is black if n is a "primitive root mod p", that is, if the powers 1,n,n^2,...n^(p-2) are all distinct, white if not, and gray if n is too big to even be eligible. And then GF(p^n) for n≥1 are even more crazy. What the fuck, number theory.


#!/usr/bin/perl

@primes = qw(
      2      3      5      7     11     13     17     19     23     29 
     31     37     41     43     47     53     59     61     67     71 
     73     79     83     89     97    101    103    107    109    113 
    127    131    137    139    149    151    157    163    167    173 
    179    181    191    193    197    199    211    223    227    229 
);

sub order {
    my ($p, $m) = @_;
    return 0 if $m < 1;
    return 0 if $m >= $p;
    my $x = 1;
    my $t = 0;
    while (1) {
	$t++;
	# print "$x ";
	$x = ($x * $m) % $p;
	return $t if $x == 1;
    }
}

print "      2 3 4 5 6 7 8 9 " . ("0 1 2 3 4 5 6 7 8 9 " x 2);
print "\n";
for my $p (@primes) {
# for my $m (1..$p-1) {
  printf "% 5d ", $p;
  for my $k (2..29) {
    my $o = order($p, $k);
    print $o == 0 ? "  " : $o == $p-1 ? "# " : "' ";
  }
  print "\n";
}




#!/usr/bin/perl

@primes = qw(
      2      3      5      7     11     13     17     19     23     29 
     31     37     41     43     47     53     59     61     67     71 
     73     79     83     89     97    101    103    107    109    113 
    127    131    137    139    149    151    157    163    167    173 
    179    181    191    193    197    199    211    223    227    229 
    233    239    241    251    257    263    269    271    277    281 
    283    293    307    311    313    317    331    337    347    349 
    353    359    367    373    379    383    389    397    401    409 
    419    421    431    433    439    443    449    457    461    463 
    467    479    487    491    499    503    509    521    523    541 
    547    557    563    569    571    577    587    593    599    601 
    607    613    617    619    631    641    643    647    653    659 
    661    673    677    683    691    701    709    719    727    733 
    739    743    751    757    761    769    773    787    797    809 
    811    821    823    827    829    839    853    857    859    863 
    877    881    883    887    907    911    919    929    937    941
    947    953    967    971    977    983    991    997   1009   1013
   1019   1021   1031   1033   1039   1049   1051   1061   1063   1069
);

sub order {
    my ($p, $m) = @_;
    return 0 if $m < 1;
    return 0 if $m >= $p;
    my $x = 1;
    my $t = 0;
    while (1) {
	$t++;
	# print "$x ";
	$x = ($x * $m) % $p;
	return $t if $x == 1;
    }
}

my $w = 240;
my $h = @primes;
print "P2 $w $h 255\n";
for my $p (@primes) {
  for my $k (2..$w+1) {
    my $o = order($p, $k);
    print $o == 0 ? "128  " : $o == $p-1 ? "0 " : "255 ";
  }
  print "\n";
}

Tags: galois fields, math
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 16 comments