这个方法做什么 - 面试

以下是面试问题......你怎么开始解决这样一个问题?有这样一个问题的一般算法吗?这个方法做什么 - 面试

问题是解释这个方法做了什么。我知道,她给出了一些投入我试图(和它的OK),但我真的不知道如何下手解决这类的问题...

public boolean what (int num) 

{

boolean ans = true;

for (int x = 2; (x*x <= num) && ans; x=x+1)

{

if ((num % x) == 0)

ans = false;

}

return ans;

}

THX!

回答:

反向engeering过程,您可以按照提供一些示例输入并获取输出,通过该输出可以确定结果。

明智地选择你的输入,以便它可以很容易地解决问题。

在目前的情况下 -

输入:1返回:真
输入:2返回:真
输入:3返回:真
输入:4返回:假
输入:5返回:真
...
输入:9的回报:假//aha...it似乎是素数
...
输入:111回:假

所以在这种情况下,它的素数逻辑。

回答:

它检查num是否是主要的。

要找出一种方法读取代码并尝试了解它在做什么。你也可以尝试一些输入。对于好的代码,变量和方法的名字也有很大的帮助(这里不是这种情况)。

但是,如果该方法实现的算法不知道,而且您不知道正在解决的问题的上下文,则可能永远无法找出它的功能。

回答:

你可以用几个随机输入 找到它运行的方法,并试图找出你给出的INPUT和出现的OUTPUT之间的关系。

在得出结论之前,先检查它已知输出,然后声明您的答案。

回答:

设NUM = 10

public boolean what (int num) 

{

boolean ans = true;

for (int x = 2; (x*x <= num) && ans; x=x+1)

{ //^ multiply x with x will give (4,9).. When x = 4, than (16<= num) = false

if ((num % x) == 0) // divide 10 by (2,3) if reminder is zero that means 10 is not prime

ans = false; // set ans to false so that for loop can be terminated or just break;

}

return ans;

}

回答:

在上述程序中最初假设数目为不是素数。如果任何大于2且小于或等于数字平方根的数字除以给定数字,则该数字不是素数。

如果数字不是素数,则该方法返回true,如果数字是质数,则返回false。

回答:

方法的目的:找出素数。

如果输入数字是素数,则此方法会输出booleaan ans ='true'。 否则它会返回false值。

由此可见,以找出是否一个数是质不是最简单的逻辑..

例如,如果一个数字是11, 第1步 - 我们用NUM直到(NUM * NUM)乘以它是小于11. {因为所有可能的情况都被测试,所以不需要测试超过值大于num * num的值}。

第2步 - 检查是否将11/2的剩余部分是零或不是,如果余数不为0则11不prime.if它分裂我们回到步骤1

所以循环会。 。

步骤1 NUM = 11,X = 2

步骤2 11%2!= 0所以转到步骤1,NUM undivisible

步骤1 NUM = 11,X = 3

步骤2 11 %3!= 0

步骤1 num = 11,x = 4但x * x = 16和16> 11因此不再有循环,11是素数,因为它不能被任何数字整除直到x = 3。

另一个例子可以是38 .. 步骤1 NUM 38,x = 2时

步骤2 38%2 == 0,所以余数=零和ANS =假因而不再通过循环和 '38'不是素数。

一个更高级的方法来找到一个数字,如果它的素数或不是可以测试其可分性只针对素数。如果我们有相当大的数字作为输入,这实际上更高效。

public boolean what (int num) // number to be tested is passed 

{

boolean ans = true; // default value

for (int x = 2; (x*x <= num) && ans; x=x+1) //looping till num is found divisibl

{

if ((num % x) == 0)

ans = false; // ans is false in case num is not prime

}

return ans; // num is prime

}

希望解释帮助..如有任何疑问或帮助,请通知我。

以上是 这个方法做什么 - 面试 的全部内容, 来源链接: utcz.com/qa/259411.html

回到顶部