【问题标题】:Defining a method that determines whether elements in an array are negative, prime, or perfect squares定义一种方法来确定数组中的元素是负数、素数还是完全平方
【发布时间】:2014-01-25 19:22:10
【问题描述】:

我正在尝试用 Java 编写一个代码,该代码可以接受一个整数数组,并使用一个名为 contains 的定义方法来确定该数组是否包含素数、完美平方或负数的元素。该方法接受一个整数数组,如果数组中存在满足指定条件的任何项,则返回 true。比如下面的代码片段:

int[] input = {100, 37, 49};

boolean result1 = contains(input, new Prime( ));
boolean result2 = contains(input, new PerfectSquare( ));
boolean result2 = contains(input, new Negative( ));

result1 会返回 true,因为 37 是素数,result2 也会返回 true,因为 100 和 49 是完美的正方形,result3 会返回 false,因为没有一个元素是负数。代码需要实现:

  • 用于指定要包含的第二个参数的接口。

  • contains 方法本身(这是一个静态方法)。

  • 负数、质数和完美平方类。

我的主要问题是确定如何编写 contains 方法以及 Prime 和 PerfectSquare 类。任何帮助将不胜感激。

【问题讨论】:

  • 你具体卡在哪里了?
  • 我只是不确定如何在 java 中定义质数或完美正方形。我真的在寻找一种可以确定任何给定数字是否为素数的算法,以及一种确定数字是否是完美平方的算法。这些是我的主要问题。很抱歉,如果我不是很清楚,这是我第一次在这里发布问题。
  • 不知道素数或完全平方数的算法不是 Java 问题,而是数学问题。 Wikipedia 上有非常非常好的算法,将它们翻译成 Java 并不难。至少对于完美的正方形,我会给你一个提示:你想要一个值 X,这样 (int)sqrt(X*X) == X

标签: java arrays interface contains primes


【解决方案1】:

要确定一个数是否为素数,您需要将该数除以从 1 到该数平方根的每个数。

static boolean isPrime(int num){
for(int i=2;i<=Math.sqrt(num);i++){
if (num%i==0)//if you can divide him by a number other than 1 and himself return false
return false
         }
return true;

}

要确定一个数是否是完美平方,只需计算它的平方根并检查它是否是一个整数

static boolean isPerfectRoot(int num){
double sqrt=Math.sqrt(num);
int casting=(int)(sqrt);//cast it to an int
if(sqrt%casting==0)
return true;
else
return false


}

我假设您知道如何编写方法 isNegative()。您可以从您的 contains 方法中调用这 3 个方法。您的包含方法基本上必须遍历数组并在每个输入上调用 3 个方法。 你需要这些类做什么,特别是你不给他们任何论据是没有意义的,你能澄清你的意图吗?

【讨论】:

    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    相关资源
    最近更新 更多