java - Writing a program that determines a prime number
问题描述
I'm trying to write a program that asks the user to enter a number, then I need to create a method called isPrime
to create the calculation and print out the result in main. I'm sure it's something small that I'm missing, but I can't get it to produce an accurate result.
public static void main(String[] args) {
System.out.print("Enter number: ");
int num = s.nextInt();
if (isPrime(num) == true) {
System.out.println("Number is prime");
} else if (isPrime(num) == false) {
System.out.println("Number is not prime");
}
}
public static boolean isPrime(int num){
for(int i = 2; i <= num/2; i++) {
if (num%i != 0) {
return true;
}
}
return false;
}
解决方案
Use an if
and else
(don't retest your boolean condition in the first case). And don't test for == true
in an if
. This
if(isPrime(num) == true)
{
System.out.println("Number is prime");
}
else if(isPrime(num) == false)
{
System.out.println("Number is not prime");
}
Should just be
if (isPrime(num)) {
System.out.println("Number is prime");
} else {
System.out.pritnln("Number is not prime");
}
or even something like
System.out.print("Number is ");
if (!isPrime(num)) {
System.out.print("not ");
}
System.out.println("prime");
If you want to put the braces on their own lines go ahead. As for your isPrime
method; you have your return conditions reversed (and the test as well). Also we can optimize it a bit. Unroll the first even test, because then we can skip every other element. Also we only need to test to the square root of the input number. Like,
public static boolean isPrime(int num) {
if (num == 2) {
return true; // two is prime.
}
if (num < 1 || num % 2 == 0) {
return false; // all other even numbers are not prime.
}
for(int i = 3; i <= Math.sqrt(num); i += 2) {
if (num % i == 0) {
return false;
}
}
return true;
}
推荐阅读
- php - php echo中的需要帮助按钮href
- c - 将 void 指针转换为字符串
- javascript - 如何将 json 文件的全部内容转储到 div 中?
- python - 如何从 flask_sqlalchemy 应用程序执行存储过程
- azure - 如何在远程 Azure VM 上执行 Powershell 命令/脚本?
- excel - 动态条件格式(索引、匹配)
- android - 在 RecyclerView 中预取文本布局,无法解析方法 setTextFuture
- python - sqlite 如果存在则更新,否则在 python 中插入
- android - 比较 Firebase Auth 和 Firebase Object 中的属性
- php - 在 Woocommerce Checkout 上删除某个国家/地区的特定州