isItPrime使用布尔方法?很近

时间:2014-10-30 05:58:09

标签: java

我觉得我太近了!输出只输出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;
 }
}

4 个答案:

答案 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";
}