Hi,

I have written a program that accepts a positive integer as input and determines whether or not the number is prime, it all works accept when a number is prime it should display " x is a prime number " and continue to prompt for user input ( loop ) but it will only display " please enter a number"

Could you have a look at my code and see what I am missing or what I have done wrong please?

Thank you!

Here is the code:

``````import java.io.*;

public class PrimalityTest
{

public static void main(String[] args)throws IOException{

// create a keyboard input stream

// variables to store input
int Input;

do
{

// prompt for user input

// test for prime number

for (int i = 2; i < Input; i++)
if ((Input % i) == 0)
{
System.out.println(Input + " is not a prime number");
return;
}
else
System.out.println(Input + " is a prime number");

// if number is 0 then exit
if (Input == 0)
{
System.out.println("Exiting program...");
}
else
// if number is negative
if (Input <= -1)
{
}

}

while (Input !=0);

}
}
``````

## All 2 Replies

First clue to you is to use 'break' and not 'return'

Here is the completed code I worked out. Note - I expanded to a long to enable you to enter large numbers.

``````import java.io.*;

public class PrimalityTest {

public static void main(String[] args) throws IOException {

// create a keyboard input stream

// variables to store input
//     int Input;
long Input;
boolean isprime;

do {
// prompt for user input

isprime = true;    // Set/reset flag

// test for prime number
for (long i = 2; i < Input; i++) {
if ((Input % i) == 0) {
System.out.println(Input + " is not a prime number");
System.out.println("It is divisable by: " + i);
isprime = false;
break;  // Break out of loop
}
}

// See if we found a divisor
if(isprime){
System.out.println(Input + " is a prime number");
}
// if number is 0 then exit
if (Input == 0) {
System.out.println("Exiting program...");
} else
// if number is negative
if (Input <= -1) {