Question

As a Christmas gift I have written a small program in Java to calculate primes. My intention was to leave it on all night, calculating the next prime and writing it to a .txt file. In the morning I would kill the program and take the .txt file to my friend for Christmas.

Is there anything I should be worried about? Bear in mind that this is true beginner Ziggy you are talking to, not some smart error checking ASM guy.

EDIT More specifically, since I will be leaving this program on all night counting primes, is there any chance at all that I will encounter some kind of memory related error? Like, stacks crushing heaps or dogs and cats sleeping together?

EDIT even more specifically, is there a line of code I could put in to stop the printing of lines when the file's size is 4GB? Just to be safe?

EDIT: success: after leaving it on all night I got no more than 13 KB of primes, The highest I got was 22947217, which is like tens of thousands of primes. Success!

Was it helpful?

Solution

More than likely you are using an algorithm that is slow. As the primes get larger your program will be taking longer and longer to calculate a single prime. If you let it run over night the text file is not going to be very large in the morning. I'd be impressed if it's over a couple of megs.

OTHER TIPS

I would recommend sending an SMS message for each prime you calculate. Your friend would like that much better than a bunch of paper. Plus he can be updated much more often.

There's plenty of limits, though none of them are intrinsic to .txt files:

  • Windows 9x Notepad won't open a file > 64KB.
  • Windows NT/2k/etc's Notepad has no limit, but tends to choke and lock up on multi-megabyte files. You also need to remember most text editors are dumb and try to read the entire file into RAM.
  • Lots of software is limited to 2GB or 4GB files depending on whether they use signed or unsigned ints - as someone already mentioned FAT32 is guilty of this.

Technically, there is no limit except that which the file system places on you. However, Notepad is really cranky about opening obscenely large files.

You might consider tracking the number of bytes you write to each file and switching to a new one after some number of bytes. You might also provide a viewer for your files so your friend can see his gift more easily. :)

If memory serves, FAT32 has a 4gig file limit size.

Ziggy--

I love this: "not some smart error checking ASM guy." You are describing all of us!

Have plenty of disk space and write away! As previously mentioned, be sure the editor used to open your file can open very large files.

Happy holidays, true beginner Ziggy.

Only as to the size of the place you're storing the text file on disk.

And, if you're not writing it all right away, your memory + virtual memory.

How about saving some CPU cycles and just downloading a pre-computed list of primes? Or is it more "the thought that counts"? :)

What about just creating one file for each prime number and then use the filename to display the number?

Somehow I doubt that when having your program run overnight, that the filesize will be a problem, considering that it will take longer to find primes as numbers get bigger. Just make sure you clean up or you might eat up all your RAM.

To answer your question: Theoretically, the filesystem restricts file size. However, a lot of text editors crash (vim does not) when loading big files (> 100 MB), because they try to fit it in one buffer.

To sum up, consider splitting up your files into chunks the weakest link (text editors) can handle.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top