我必须编写代码,这是我到目前为止所做的:
素数是一个只能被自身和I整除的数字。例如, 数字5是素数,因为它可以被均匀地除以1和5.然而,数字6, 不是素数因为它可以被均分为1,2,3和6。 编写一个名为isPrime的方法,它以整数作为参数,如果是则返回true 参数是素数,否则为假。完整演示该方法 程序
这是到目前为止的代码:
package isprime;
import java.util.Scanner;
public class IsPrime {
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
System.out.println("Write a number.");
int num = userInput.nextInt();
}
public static boolean isPrime(int num) {
int isPrime = num % num;
if (isPrime !=0 || isPrime != 1)
return false;
else
return true;
}
}
现在的问题是我不太了解布尔表达式是如何工作的,所以这就是为什么我做了一个内部方法布尔值,但它不会在内部方法中选择用户数响应。这是我被困的地方。还有一条消息说if是多余的?任何人都可以帮助找到答案,而不是答案本身吗?从长远来看,我不会学习如何做到这一点。
第2部分:
现在我必须将这些素数放入文件中。我知道我必须使用PrintWriter,但我不确定在哪里放置它。另外,如何使用PrintWriter fileName = new PrintWriter(“PrimeNumbers.txt”)创建文件;
这是新创建的代码:
package isprime_final;
import java.io.PrintWriter;
import java.util.Scanner;
public class IsPrime_Final
{
public static void main(String args[]){
Scanner fileName = new Scanner(System.in);
System.out.println("Name the file for Prime Number list.");
String primeList = fileName.nextLine();
for (int isPrime = 0; isPrime <= 100; isPrime++) {
if (isPrime(isPrime)) {
PrintWriter PrimeNumbers = new PrintWriter(System.out);
PrintWriter.println(isPrime);
}
}
PrintWriter.close();
}
public static boolean isPrime(int prime) {
if ((prime & 1) == 0) {
if (prime == 2) {
return true;
} else {
return false;
}
}
for (int i = 3; (i * i) <= prime; i += 2) {
if ((prime % i) == 0) {
return false;
}
}
return prime != 1;
}
}
答案 0 :(得分:3)
int isPrime = num % num;
这没有任何成就。根据定义,num % num
始终为0(请记住a % b
是将a
除以b
)时的余数。
if (isPrime !=0 || isPrime != 1)
由于表达式始终为true,因此无法完成任何操作。你问的是isPrime
是否与0不同,或与1不同。有三种可能的情况:
isPrime
为0. isPrime != 0
为false,isPrime != 1
为true,整个表达式为true。isPrime
为1. isPrime != 0
为真,isPrime != 1
为false,整个表达式为真。isPrime
是任何其他值。 isPrime != 0
为真,isPrime != 1
为真,整个表达式为真。首先,你需要的是循环来寻找除数。如果您可以在2
和num-1
之间找到除数num % divisor == 0
,那么num
就不是素数。如果你找不到,那就是素数。
答案 1 :(得分:2)
您不是从main方法的任何位置调用Boolean方法isPrime。在您阅读用户的响应后,您需要先调用它。其次,你正在做
num%num
这将永远给你真实。所以它永远不会陷入虚假状态。
希望这会有所帮助
快乐学习:)
答案 2 :(得分:1)
定义了素数as a number only divisible by itself and 1
。
要确定数字N是否为素数,一种天真的方法是检查该数字是否可被1和N之间的任何数字整除。
public static boolean isPrime (int num) {
for (int i=2; i<num; i++)
if (num % i == 0) // num is divisible by i
return false; // num is not prime.
return true; // because num passed all tests, num is prime.
}