使用 Eclipse、Java
尝试制定检查一个数是否为素数的方法(手段可以被1和他自己分开)与否
当前创建了一些功能(下面的代码)。此代码返回所需的结果,但并非对于所有素数,意味着对于数字 33 和 55,它是 returnfalse
而不是true
.
代码
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");
}
}
问题- 我在“逻辑”中犯了错误 - 花几个小时来修复 - 但不能这样做。有什么建议吗?
结果必须如下所示
Enter number -
1
simple
Enter number -
2
simple
Enter number -
3
simple
Enter number -
4
not simple
Enter number -
5
simple
...
但我得到了
Enter number -
33
not simple - **WRONG**
Enter number -
55
not simple - **WRONG**
编辑:
非常感谢所有人都尝试像 Michael Konietzka 一样悲伤:
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);
}
和 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;
}
}
现在它的工作完美感谢您的帮助!