Talk:Quadratic reciprocity

From Wikipedia, the free encyclopedia

Dear DYLAN LENNON,

Could you please explain how you intend to use quadratic reciprocity to prove fermat's theorem on sums of two squares. The only part that I can see is vaguely relevant is the first supplementary theorem, i.e. that \left(\frac{-1}p\right) = (-1)^{(p-1)/2}, which is by far the most trivial part of QR. (I have taken the liberty of reverting your edit again until you can provide an explanation.) Dmharvey 01:53, 5 February 2006 (UTC)

You can learn by reading this note. (http://www.math.nmsu.edu/~history/book/numbertheory.pdf) Good luck DYLAN LENNON 02:45, 5 February 2006 (UTC)

I've had a look, and I can't find what you mean. Could you give a page number perhaps? Even better, which paragraph/sentence supports your claim? Dmharvey 02:50, 5 February 2006 (UTC)

[edit] ZX81

There is this lovely line in the ZX81 manual:

65537 is a Fermat prime, 216 + 1. Use this, and Gauss's Law of Quadratic Reciprocity, to prove that 75 is a primitive root modulo 65537.

Needless to say I am none the wiser!

Having now discovered the primitive root modulo n page, it transpires that all I needed to do was to verify that 75^{2^{15}} \not\equiv 1 \pmod{65537}

[edit] Python code for residue table

I started trying to make a table of residues to illustrate quadratic reciprocity, but it soon got very painful to do by hand. So I wrote a Python script (my first!) to do it for me. Of course, just editing the script here won't update the table, you'll have to run it on your own machine :-)


    # find primes from 3 up to max
    max = 50
    primes = []
    for n in range(3, max):
        composite = False
        for d in range(2, n-1):
            if n % d == 0:
                composite = True
                break
        if not composite:
            primes.append(n)
            
    count = len(primes)

    yes_marker = '✓'   # tick (U.S. "check") for residues
    no_marker  = '✗'   # cross for non-residues

    def colortag(n):
        if n % 4 == 1:
            return 'bgcolor=#e0ffff'
        else:
            return 'bgcolor=#ffe0e0'

    # computes Legendre symbol (a/q)
    # assumes a and q positive, q prime, (a, q) = 1
    def legendre(a, q):
        for n in range(1, q-1):
            if (n * n) % q == a % q:
                return 1;
        return -1;
        
    # print table header
    print '{| class="wikitable"'
    print '|-'
    print '| || colspan=' + str(count+1), 'align="center" |', "''p''"
    print '|-'
    print '| rowspan=' + str(count+1), "|  ''q''  || ",
    for p in primes:
        print '||', colortag(p), 'align="center" style="border-bottom:2px solid" |', "'''" + str(p) + "'''", 
    print

    # now the main table
    for q in primes:
        # first column
        print '|-'
        print '|', colortag(q), 'align="right" style="border-right:2px solid" |', "''' " + str(q) + " '''",

        # remaining columns
        for p in primes:
            print '||', colortag(1+(p-1)*(q-1)/2), '|',

            if p == q:
                print ' ',
            else:
                # symbol for (p/q)
                if legendre(p, q) == 1:
                    print yes_marker,
                else:
                    print no_marker,

                if legendre(q, p) == 1:
                    print yes_marker,
                else:
                    print no_marker,
        print
            
    print '|}'

Dmharvey 03:22, 21 April 2006 (UTC)