Files
ioccc/1994/weisberg
Landon Curt Noll f29b37e49a improve HTML menus, add social.html, prep for IOCCC28 winners
Prepare for the winners of **IOCCC28**.

> However these are not the 2024 droids you are looking for.  :-)

The HTML menu (both JavaScript and non-JavaScript) has been updated.

The `Status -> Rules and guidelines' have been replaced with two
separate menus `Status -> IOCCC rules` and `Status -> IOCCC guidelines`.

Added a new top level `social.html` page: built from a new `social.md`.

Sorted rules for building specific web pages in the top level `Makefile`.
Added `make social` to make the `social.html` page from `social.md`.

The `bin/gen-top-html.sh` now is able to process a argument of **social**
to process the new top level `social.html` page.

Changed `bin/gen-top-html.sh` VERSION from "2.0.0 2025-03-13"
to "2.0.1 2025-07-25".

Below `About -> Home page` a new `About -> IOCCC social media` menu item
as added.

Because the menu change touched every HTML file, we changed the general
copyright date range for HTML files from "1984-2024" to "1984-2025"
due to the extensive changes made for **IOCCC28**.

Those markdown files that were modified in 2025 had their copyright date
range also changed from "1984-2024" to "1984-2025".

Rebuilt tarballs and sitemap due to the extensive HTML rebuilding.

Ran `make update` to perform the above.
2025-07-26 13:06:29 -07:00
..
2024-07-24 12:03:57 -07:00
2022-09-18 23:37:49 -07:00
2023-07-06 21:49:38 -07:00

To build:

    make all

There is an alternate build (same code, alternate build) that uses more memory. See Alternate code below for more details.

To use:

    ./weisberg

Try:

    ./try.sh

If you have primes(1) installed you might also wish to try:

    ./primes.sh number

where number is a positive number, defaulting to 15. The try.sh script will also try :-) and do this.

Alternate code:

If you liked what you saw from the above program, and happen to have some 512 megabytes of virtual memory lying around with to do something with you might try this build.

Alternate build:

    make alt

Alternate use:

    ./weisberg.alt

Lesser systems will find this alternative version a good way to create a core file. :-)

Judges' remarks:

This entry confuses some C-preprocessors and some C-beautifiers. We found one cpp that processed this source differently when it was read on stdin instead of via cc -E.

Author's remarks:

Description

The following short program implements the "Yet Another" algorithm for generating prime numbers. It will generate all primes up to 33554432, displaying them to the standard output as it churns along. As 33554432 is rather large on most machines, this code may take quite some time to run to completion, so as an added feature, it will cease execution upon reception of a signal (any will do equally well), as well as in the event of a system shutdown or reboot.

Bugs

The alternative build (weisberg.c compiled to weisberg.alt) has never actually run to completion. After running for close to a week it had reached somewhere around 250e6, when it became necessary to test the reboot feature (which worked remarkably well). As there are quite a lot of primes to be found before reaching INT_MAX, the output produced can be quite overwhelming so it's recommended to pipe the output through your favorite pager (more or less), and not output to a paper output device (unless you have LOTS of paper).

Technical

The original "Yet Another Prime Program" algorithm used here was developed as a Computer Architecture course micro-programming exercise, and was designed to take full advantage of the UR300 micro-architecture to achieve blindingly fast speed. It was ported to C specifically for the IOCCC. In the conversion/obfuscation step some of (much of) the blazing speed was lost, but as a bonus, the understandability of the code was reduced to zero.