using Eclipse, Java
Try to make method for checking whether a number is prime (means can be devided by1 and by himself) or not
Currently was created some functionality (code below). This code return required result, but not for all numbers that are prime, means for number 33 and 55 it’s return false instead of true.
Code
private static void numberCheker() throws IOException {
System.out.println("Enter number - ");
int number;
number = getNumber();
boolean result = true;
if ((number % 2 == 0) && (number != 2)) {
System.out.println("Not");
} else if (number == 1) {
System.out.println("1 not a valid number");
} else if (number == 2)
System.out.println("Simple");
else {
for (int i = 2; i < number + 1; i++) {
if (number % i == 0) {
result = false;
} else
result = true;
}
if (result = true)
System.out.println("Simple");
else
System.out.println("not Simple");
}
}
The question – where i’m make mistake in my “logic” – spend few hours for fixing – but cant do that. Any suggestion?
Result must be like below
Enter number -
1
simple
Enter number -
2
simple
Enter number -
3
simple
Enter number -
4
not simple
Enter number -
5
simple
…
but i got
Enter number -
33
not simple - **WRONG**
Enter number -
55
not simple - **WRONG**
EDIT:
many thanks all
try to do like Michael Konietzka sad:
private static boolean numberCheker() throws IOException {
System.out.println("Enter number - ");
int number = getNumber();
for (int i=2;i<number;i++)
{
if (number%i==0) return false;
}
return (number>1);
}
and getNumber()
public static int getNumber () throws IOException{
int temp;
try{
BufferedReader bReader = new BufferedReader (new InputStreamReader(System.in));
String resultReader = bReader.readLine();
temp = Integer.parseInt(resultReader);
return temp;
}
catch (NumberFormatException failDescription){
System.out.println(failDescription);
return 0;
}
}
now its work perfect
Thanks for your help!
You may put the check in a static method of your class:
You must iterate trough all numbers from 2 to n-1 and check, if n is divisible by i without remainder. If so, the method can return immediately false, because one factor was found. If no factor is found between 2 and n-1 and the number is greater 1 it is a prime; the method returns true.
To use this method you can use it simple this way for example:
which will output