Pages

Java Program to print prime numbers from 1 to 100

In this article, I'll share you a simple problem about writing a Java program to print prime numbers up to a given number e.g. say prime numbers from 1 to 100. It's one of the most common coding exercises for programmers learning in Java, as it gives you an opportunity to learn more about essential operator in Java Programming. The key here is that you cannot use a library function which can simply your job, you need to devise the algorithm for checking prime number by yourself. One of the most popular algorithms for generating prime is Sieve of Eratosthenes, which we have discussed earlier, but in this post, we will take a simpler approach. We'll first write a function to check whether a number is prime or not and then we loop through first 100 numbers i.e. from 1 to 100 and print only those which passed the prime test. Btw, if you are looking for some serious programming coding question for the interview, then you can also take a look at Cracking the coding interview, which contains more than 150 coding question with solutions.

How to check if a number is prime or not

A number is said to be prime if it's not divisible by any number other than itself e.g. 2, 3 or 5. 1 is not counted as a prime number, so the lowest prime number is 2. One of the easiest way to check whether a number is prime or not is to loop from 2 to the number itself and checks if it's divisible by any number in between or not.

You can do that check by using modulus operator in Java, which return zero if a number is perfectly divisible by another number. If the number you are checking is not divisible by anyone then it's a prime number otherwise, it's not a prime number.

But this logic can be further optimized to only loop through the square root of the number instead of the number itself, as shown in below example. This will make the Java program fast for checking large prime numbers.

That's all about how to print prime numbers in Java from 1 to 100. Let me know if you find any bug on this program or you think if this program will not work in any specific scenario. This looks much more optimized than looping till the number itself.

19 comments:

Another interesting read. But there is a bug in the code. When testing n for prime, the logic should check reminder from 3 up to (and including) square root of n. That is why 25 and 49 are showing up as "prime" in your output.

'isPrimeOrNot' is a terrible name for a function... 'isPrime' describes way better what the function does. Also, you must have some other bug lying around because your result also contains 9 which is not prime...

Neat code. I would like to suggest an improvement At this piece of code for (int i = 3; i < Math.sqrt(num); i += 2){ if (num % i == 0 || num % Math.sqrt(num) == 0) { return false; }With a slight change the or (||) statement could be omitted. The counter 'i' could be also checked for equality to the square root of num. Hence i <= Math.sqrt(num).

Thanks @Anna, glad that you like this post about generating prime numbers in Java. If you want to learn about different methods then don't forget to check the Sieve of Eratosthenes algorithm for generating prime numbers as well.

Hi Javin. Firstly, thanks for your good articles. I'm your new subscriber. I wondered why didn't use num%Math.sqrt(num) in first if condition. Because num not changes. If we use like this, it can reduce complexity of algorithm and in some situation maybe increase efficiency. Again thank you so much. Good work.