我觉得我太近了!输出只输出true true true或false false false(取决于数组的长度和用户输入。
我觉得这是因为if / else!例如,如果您首先输入的数字是真或假,那么所有这些都是!?
这应该是向控制台打印数组中的数字,数组的索引,以及它们是否为素数。
感谢您的帮助!!
import java.util.Scanner;
import java.util.Arrays;
public class isItPrime {
//main method
public static void main (String[] args) {
//Scanner
Scanner input = new Scanner(System.in);
System.out.println("Enter length of array: ");
int n = input.nextInt();
int[] numbers = new int[n];
System.out.println("Enter " + n +" integers to fill the array: ");
for(int i=0; i<n; i++){
numbers[i] = input.nextInt();
}
System.out.println(Arrays.toString(numbers));
for(int j=0; j<n; j++){
System.out.println(numbers[j] + ": " + j + " -- " + isPrime(numbers));
}
}
public static boolean isPrime(int[] numbers){
boolean Prime = true; //initial boolean value
for (int i = 2; i<numbers.length; i++) {
for (int j=0; j<numbers.length; j++) {
if (numbers[j] == 1 || numbers[j] == 0) {
Prime = false;
}
else if (numbers[j]%i==0){ //function which determines if an int is prime.
Prime = false;
}
else {
Prime = true;
}
}
}
return Prime;
}
}
答案 0 :(得分:1)
这就是你需要的:
public class IsItPrime{
//main method
public static void main(String[] args) {
//Scanner
Scanner input = new Scanner(System.in);
System.out.println("Enter length of array: ");
int n = input.nextInt();
int[] numbers = new int[n];
System.out.println("Enter " + n + " integers to fill the array: ");
for (int i = 0; i < n; i++) {
numbers[i] = input.nextInt();
}
System.out.println(Arrays.toString(numbers));
for (int j = 0; j < n; j++) {
System.out.println(numbers[j] + ": " + j + " -- " + isPrime(numbers[j]));
}
}
public static boolean isPrime(int numbers) {
boolean Prime = true;
if (numbers == 1 || numbers == 0) {
Prime = false;
return Prime;
}
for (int i = 2; i < numbers; i++) {
if (numbers % i == 0) {
Prime = false;
return Prime;
} else {
Prime = true;
}
}
return Prime;
}
}
只需要将一个整数传递给isPrime函数。 此外,为了处理这个整数,在isPrime函数中只有一个循环就足够了。 我做了必要的修改。
答案 1 :(得分:0)
假设您想要返回哪些元素是素数:
public static boolean isPrime(int[] numbers){
boolean prime[] = new boolean[numbers.length]; //initial boolean value
for (int i = 0; i<numbers.length; i++) {
for (int j=2; j<=sqrt(numbers[i]); j++) {
if (numbers[j]%i==0){ //function which determines if an int is prime.
prime[i] = false;
continue;
}
}
prime[i] = true
}
return prime;
}
我正在创建一个素数数组,无论哪个是素数,我都在数组中使它的位置为true,然后继续使用下一个元素。
此外,对于素数,为了提高效率,您必须检查square root of the number
。
例如,如果您想检查 10是否为素数,最好迭代直到 sqrt(10)= 3.2 。
答案 2 :(得分:0)
您最大的问题是,isPrime()
方法应计算特定数字是否为素数,而不是分析数组数字。
试试这个:
public static boolean isPrime(int number){
// return true if prime
}
并称之为:
System.out.println(numbers[j] + ": " + j + " -- " + isPrime(number[j]));
答案 3 :(得分:0)
改变返回字符串的方法,即&#34; Prime&#34;或者&#34; Not Prime&#34;。
public static String isPrime(int numbers) {
if (numbers == 1 || numbers == 0) {
return "Not Prime";
}
for (int i = 2; i < numbers; i++) {
if (numbers % i == 0) {
return "Not Prime";
}
}
return "Prime";
}