Project III in developing distributed services

This report contains a C# web service implementation of assignment 2 from the previous project (source code). The assignment has one console applications which acts as a test client, the class library from the previous project and a web service implementation which uses the class library.

Here is the assignment description from project II: “Assignment 2: Programming some algorithms like bubble sort, linear search and binary search. The console application, which does some sorting and searching on some arrays of integers, is non-interactive.”

NOTE: This post has been imported from my old it’s learning ePortfolio project blog.

XECryption Solver 0.1

The XECryption Solver GUI program is designed to assist you in deciphering text encrypted by the XECryption cipher. This cipher appears to originate from the realistic mission level 6 on hackthissite.org. In addition to the binary you can also download the source code which is licensed under the GPL version 2.0. The program is written in C# and so you probably need one of those .NET framework things installed.

NOTE: This post has been imported from my old it’s learning ePortfolio project blog.

Enumeration of prime numbers 0.2

I’ve updated the Prime Time command line program to version 0.2. Changes includes a huge memory optimization and some minor performance optimizations. The computation time is reduced by about 12% so the test from the previous post (finding all primes up to the number 10 000 000) now takes only 4.602 seconds on average, compared to 5.211 seconds in version 0.1.

I also did a test on how long it took to find all primes up to 4 294 967 295 (the maximum value an unsigned 32-bit integer can hold) which took 5 hours, 17 minutes, 16 seconds and 70 milliseconds. The end result was a list of 203 280 221 primes. I ran the test without printing each individual prime to prevent disk IO operations from slowing down the process. Afterwards I ran the program with the – -print-primes option to write all the primes to a file. I ended up with a 2.2 GB large file and, when compressed with 7-Zip‘s most aggressive settings, it was reduced to about 200 MB. I choose the maximum unsigned 32-bit value because I knew that would go relatively fast on my 32-bit processor, but if you’re feeling adventurous you can crank it up to the maximum value of an unsigned 64-bit integer, which is the limit for the program. Just don’t complain to me when it never finishes. Both the binaries and source code is available for download.

NOTE: This post has been imported from my old it’s learning ePortfolio project blog.

Enumeration of prime numbers 0.1

The Prime Time command line program allows you to enumerate all the prime numbers up to a specified number and it also lets you know how long it takes. The binaries has been compiled for x86 as well as an x64 specific version. In addition to the binaries you can also download the source code which is licensed under the GPL version 2.0. The program is written in C# and so it requires that one of those .NET framework things are installed. I have no clue as to which version of .NET you need. All I know is that I wrote this in Visual Studio 2005.

If you are interested in benchmarks and performance metrics you might want to know that my Dell XPS M170 laptop (Intel Pentium M 2.13 GHz, 2 GB DDR2 PC4200) takes an average of 5.211 seconds to find all the prime numbers up to 10 million (not the 10 million first prime numbers, but all the prime numbers up to the number 10 000 000). I used the command line:

primetime --max-prime 10000000 --runs 10

It uses a very simple algorithm to enumerate all the primes. What it does is to divide each odd number, starting from 3, on every prime below it (well, actually every prime up to the square root of the number being tested). If all of the divisions has a non-zero remainder, then the number is added to the list of primes and the next odd number is tested.

NOTE: This post has been imported from my old it’s learning ePortfolio project blog.