My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Links

The Problem

This is C++ code to compute good ABC triples, defined as:

A good abc triple is a set of 3 positive integers a, b, c such that

  1. a + b = c
  2. gcd(a,b,c) = 1
  3. c > rad(abc)

where rad(n) is the product of all primes dividing n for n a positive integer.

The ratio of a good abc triple is simply log(c)/log(rad(abc)). A good abc example usually means a good abc triple whose ratio is greater than 1.4.

The code

The code is cross-platform C++, using the self-test suite from Eckel's 'Thinking in C++' book. It uses pthreads and STL data structures, a lock-free shared dictionary and a worker-pool thread model.

Code docs

The code is documented with Doxygen tags, so run doxygen from the main directory to generate killer HTML-based docs.

How to run it

You need the main executable as well as the (ginormous) 'primes.txt' file of precomputed prime numbers. The number of worker threads is compiled in for now. Be sure to run the selfTests binary to verify correct operation. You'll also need to run the genRadCache binary to generate the radical cache first.

Triples database

We've spent quite a few CPU cycles running this on a 32-core Sun box, the results are online at http://www.phfactor.net/abc/

Known issues

We're chasing a bug related to 64-bit mod, so some triples may be incorrect.

Powered by Google Project Hosting