each primality test, then I would recommend using your machine to factor
Mersenne numbers.
LUCAS-LEHMER DETAILS
--------------------
This program uses the Lucas-Lehmer primality test to see if 2**p-1 is prime.
The Lucas sequence is defined as:
L[1] = 4
L[n+1] = (L[n]**2 - 2) mod (2**p - 1)
2**p-1 is prime if and only if L[p-1] = 0.
This program uses a discrete weighted transform (see Mathematics of
Computation, January 1994) to square numbers in the Lucas-Lehmer sequence.
DISCLAIMER
----------
THIS PROGRAM AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
THANKS
------
Happy hunting and thanks for joining the search,
George Woltman
woltman@magicnet.net
Welcome to the Great Internet Mersenne Prime Search!
In case you ever forget, the URL is http://www.mersenne.org/prime.htm.
My email address is woltman@magicnet.net.
For networking questions, contact Scott Kurowski at primenet@entropia.com.
FILE LIST
---------
readme.txt This file.
prime95.exe The program to factor and run Lucas-Lehmer tests on
Mersenne numbers.
rpcnet.dll Communicates with the Internet PrimeNet server using RPCs.
httpnet.dll Communicates with the Internet PrimeNet server using HTTP.
whatsnew.txt A list of new features in prime95.exe.
prime.ini A file containing your preferences. The menu choices
and dialog boxes are used to change your preferences.
local.ini Like prime.ini, this file contains more preferences.
The reason there are two files is discussed later.
worktodo.ini A list of exponents the program will be factoring
and/or Lucas-Lehmer testing.
results.txt Prime95.exe writes its results to this file.
prime.log A text file listing all messages that have been sent
to the PrimeNet server.
prime.spl A binary file of messages that have not yet been sent to
the PrimeNet server.
pnnnnnnn & Intermediate files produced by prime95.exe to resume
qnnnnnnn computation where it left off.
database This optional binary file is downloaded separately. You only
need this file if you are not using the PrimeNet server.
It contains all the Mersenne exponents that still need testing.
WHAT IS THIS PROGRAM?
---------------------
This program is used to find Mersenne Prime numbers. See
http://www.utm.edu/research/primes/mersenne.shtml for a good
description of Mersenne primes. Mersenne numbers can be proved
composite (not prime) by either finding a factor or by running
a Lucas-Lehmer primality test.
INSTRUCTIONS
------------
There are two ways to use this program. The automatic way uses
a central server, which we call the PrimeNet server, to get work to do
and report your results. Anyone with Internet access, including AOL,
CompuServe, and dial-up ISP users should use this method. You do not
need a permanent connection to the Internet.
The second method is the manual method. It requires a little more work
and monitoring. I recommend this for computers with no Internet access
or with some kind of firewall problem that prevents the automatic method
from working.
If you are running this program at your place of employment, you should
first GET PERMISSION from your network administrator or boss. This is
especially true if you are installing the software on several machines.
Some companies are reluctant to run any software they are not familiar with.
INSTRUCTIONS FOR THE AUTOMATIC METHOD
-------------------------------------
1) Download and unzip prime95.zip. You've probably done this already
since you are reading this file.
2) Connect to the Internet.
3) Run prime95.exe. You will see 3 dialog boxes:
3a) In the first dialog box, enter your name and email address.
Optionally enter a user ID and password. An easy-to-remember user ID
will be helpful if you plan to visit the PrimeNet server's web page
to view reports on your progress. If you do not enter a user ID or if
you pick a user ID that is already in use, then the server will assign
a user ID.
3b) In the second dialog box, change the CPU type and speed if necessary.
Fill in roughly how many hours a day you leave your computer running.
Click OK.
3c) In the third dialog box, leave the "Use Primenet..." checkbox
checked. Do not turn this checkbox off even if you disconnect
from the Internet. Check the "Use a dial-up..." checkbox
if you use a modem to connect to the Internet. Note that prime95
will not dial-up to connect to the Internet, rather it waits
for a time when you are already connected to contact the server.
Click OK. Prime95 will now contact the PrimeNet server to get some
work for your computer to do.
4) If you cannot contact the PrimeNet server, then a firewall may be
preventing the RPCs from getting to the server. In this case, you
may want to try the HTTP-based DLL. Choose "Use HTTP-based DLL"
from the Test/Primenet dialog.
4a) If you now get the error message "Unable to load HTTPNET.DLL", then
you are probably missing WININET.DLL. This DLL is shipped with
Microsoft's Internet Explorer. It is also installed by default in
later versions of Windows 95 and Windows NT. You can download and
install WININET.DLL from Scott Kurowski's web site. See
http://entropia.com/ips/faq.html#wininet for details.
4b) If the http-based DLL will not connect to the server, then
you will have to use the manual method described below. There have
been reports that the http-based DLL does not work in all
MS IE 3.0 environments - we are working on making this DLL work in
as many different environments as possible.
4c) If a proxy server is the cause of your connection troubles, see the
later section on "SETTING UP A PROXY SERVER".
5) Create a shortcut to prime95.exe and place it in the startup folder.
Alternatively, you can install prime95.exe as a Windows 95 service
using the Options menu. Prime95 will now run every time you boot
your computer.
MANUAL METHOD INSTRUCTIONS #1
-----------------------------
1) Use the Web (http://entropia.com/ips/manualtests.html) to create
a userid for yourself and to get a set of exponents to work on.
Copy these exponents to a file called worktodo.ini
2) Run prime95.exe. You will see 3 dialog boxes:
2a) In the first dialog box, enter your name and email address. Click OK.
2b) In the second dialog box, change the CPU type and speed if necessary.
Fill in roughly how many hours a day you leave your computer running.
Click OK.
2c) In the third dialog box, uncheck "Use PrimeNet to get work and report
results", click OK.
3) Create a shortcut to prime95.exe and place it in the startup folder.
Prime95 will now run every time you boot your computer.
4) Once a month or when done with your exponents, use the web pages
again to send the file "results.txt" to the PrimeNet server.
It is important to do this so the exponents you are testing are
not reassigned to someone else.
MANUAL METHOD INSTRUCTIONS #2
-----------------------------
1) Download and unzip database.zip (http://www.mersenne.org/range2.htm).
2) Use the Web (http://www.mersenne.org/range2.htm) to select a range of
exponents to test. Send me e-mail on the range you've chosen.
This prevents others from testing the same range.
3) Run prime95.exe. You will see 3 dialog boxes:
3a) In the first dialog box, enter your name and email address. Click OK.
3b) In the second dialog box, change the CPU type and speed if necessary.
Fill in roughly how many hours a day you leave your computer running.
Click OK.
3c) In the third dialog box, uncheck "Use PrimeNet to get work and report
results", click OK.
4) Choose Test/Manual Operation from the menus. Enter the type of work
and range of exponents you selected in step 2.
5) Create a shortcut to prime95.exe and place it in the startup folder.
Prime95 will now run every time you boot your computer.
6) Once a month or when done with your range, send the file "results.txt" to
woltman@magicnet.net. It is important to do this so the exponents
you've tested can be removed from the master list.
NOTES
-----
Let prime95.exe run at all times. It runs at the lowest possible priority,
making use of all your idle CPU cycles. It should not interfere with your
normal work. Let the program run overnight and on weekends. Never turn
your computer off. Turn off your monitor to conserve energy. NOTE:
Running your computer non-stop could increase your electric bill by $30
per year or more.
It can take many CPU days to test a large Mersenne number. This program
can be safely interrupted by using the ESC key to write intermediate results
to disk. This program also saves intermediate results to disk every 30 minutes
in case there is a power failure.
To fully utilize a dual Pentium machine, you must run two copies of
prime95.exe. Run one copy of prime95 as described above. Run the second
copy of prime95.exe with the -A1 switch. Place two shortcuts in the
startup folder (one with no switch and one with the -A1 switch).
Dual processor machines can also improve performance by setting
processor affinity in Windows NT. To do this, do the following:
1) Run Windows NT task manager
2) Click on the processes tab
3) Find your PRIME95 processes
4) Right click on the processes and pick Processor Affinity.
5) Set the flag on CPU 0 for one process and CPU 1 for the other
You can compare your computer's speed with other users by checking the
site http://www2.tripnet.se/~nlg/mersenne/benchmk.htm. If you are
much slower than comparable machines, download Microsoft's WinTop
kernel toy to find programs (such as AOL) that are stealing all of
prime95's CPU cycles. You can download the software free at
http://www.microsoft.com/windows/downloads/contents/powertoys/w95procwatcher
You can get a report of your PrimeNet server account status on the web
(http://entropia.com/primenet/status.shtml). Type your UserID and
password into the web form, and click "Get Account Report". You can
get your UserID and password from the Test/User Information
dialog box.
Information about running a local PrimeNet server is also available.
See http://entropia.com/primenet. If you have any questions about the
PrimeNet server, you can send e-mail to primenet@entropia.com.
The first time you run this program it will perform an hour long
self-test to make sure the Lucas-Lehmer code is running properly
on your system. There are 16 different self-tests, one for each
FFT size. You can run all 16 self-tests with Options/Self Test
menu choice. This is not required.
If you have overclocked your machine, I highly recommend running the
torture test for a couple of days. The longer you run the torture test
the greater the chance that you will uncover an error caused by
overheating.
Depending on the exponent being tested, the program may decide that it
would be wise to invest some time checking for small factors before
running a Lucas-Lehmer test. Furthermore, the program may start factoring
exponents before a previous Lucas-Lehmer test completes. This is normal!
The program will resume the Lucas-Lehmer test when the factoring
completes.
For manual users, once you've started testing a range there is no advantage
in downloading a new database. After your range completes, you can download
a new database before you start your next range.
You can configure this program to have different properties at different
times of the day and/or to not run during certain times of the day.
Unfortunately, you must manual edit the prime.ini file. Let's say you
want to install the program on a friend's machine and he runs a screen
saver at night. He also runs a disk defragmenter at midnight on weekdays.
This prime.ini file will run the program at a higher priority than his
screen saver at night and on weekends. It also sleeps for an hour when
his defragmenter starts running. Finally, at night fewer save files are
generated to allow his disk to stay powered down longer.
UserID=foo
Time=1-5/8:30-17:30
Priority=1
DiskWriteTime=30
Time=1-5/1:00-8:30,1-5/17:30-24:00,6-7/0:00-24:00
Priority=5
DiskWriteTime=240
The 1-5 refers to days of the week, with Monday=1 and Sunday=7. The
time portion refers to the hours of the day based on a 24-hour clock.
You do not need to specify days of the week (e.g. Time=1-7/0:00-8:00
is the same as Time=0:00-8:00). Unpredictable results will occur if
there are overlapping time intervals. Also note that any options that
appear in the Time= sections should not appear earlier in the prime.ini
file and you can no longer edit these options from theuser interface.
SETTING UP A PROXY SERVER
-------------------------
Create a file in the same local folder as Prime95.exe, called "primenet.ini".
Add these text lines, substituting the appropriate proxy server URL and port:
[PrimeNet Proxy]
ProxyHost=http://proxy.megacorp.com:8080
If the proxy is secured by a userid/password, add the following two text
lines, substituting the appropriate values:
ProxyUser=whatever_the_userid_is
ProxyPass=whatever_the_password_is
After the first time PrimeNet is contacted through a secure proxy, the proxy
password is encoded and a new parameter 'ProxyMask=1' set. To change the
password, simply change the ProxyPass= value, and either delete the ProxyMask
text line or set ProxyMask=0.
PROGRAM OUTPUT
--------------
On screen you will see:
Factored M400037 through 17517*2^32 (pass 3 of 16). Clocks: 24235224=0.121 sec.
This means prime95 is in the third pass of a 16 pass process to
find a small factor of 2^400037-1.
Iteration: 941400 / 1667747. Clocks: 21889762 = 0.109 sec.
This means prime95 just finished the 941400th iteration of a
Lucas-Lehmer primality test. The program must execute 1667747
iterations to complete the primality test. The average iteration
took 21889762 "clock cycles" or 0.109 seconds.
The results file and screen will include lines that look like:
M2645701 has a factor: 13412891051374103
This means to 2^2645701-1 is not prime. It is divisible
by 13412891051374103.
M2123027 no factor to 2^57, WS1: 14780E25
This means 2^2123027-1 has no factors less than 2^57. The Mersenne
number may or may not be prime. A Lucas-Lehmer test is needed
to determine the primality of the Mersenne number. WS1 is
the program version number. 14780E25 is a checksum to guard
against email transmission errors.
M1992031 is not prime. Res64: 6549369F4962ADE0. WT1: B253EF24,1414032,00000000
This means 2^1992031-1 is not prime - a Lucas-Lehmer test says so.
The last 64 bits of the last number in the Lucas-Lehmer sequence
is 6549369F4962ADE0. At some future date, another person will verify
this 64-bit result by rerunning the Lucas-Lehmer test. WT1 is the
program version number. B253EF24 is a checksum to guard against email
transmission errors. 1414032 can be ignored it is used as part
of the double-checking process. The final 00000000 value is a set
of 4 counters. These count the number of errors that occurred during
the Lucas-Lehmer test.
M11213 is prime! WS1: 579A579A
This means 2^11213-1 is a Mersenne prime! WS1 is the program
version number. 579A579A is a checksum to guard against email
transmission errors.
RUNNING PRIME95 ON SEVERAL COMPUTERS
------------------------------------
The easiest way to do this is to first set up prime95 on one computer.
Next copy all the files to the second computer. Delete the local.ini
file and worktodo.ini files. These files contain information that
is specific to the first computer. Start prime95 on the second
computer and optionally use Test/User Information to
give the second computer a unique computer ID. Repeat this process
for all the computers you wish to run prime95 on.
If you do not follow the instruction above, be sure you use
Test/User Information to give each computer the same
userid and password. Failure to do this will result in all