下面的代码段检查给定数字是否为质数。有人可以向我解释为什么这行得通吗?该代码在为Java考试提供给我们的学习指南中。
public static void main(String[] args)
{
int j = 2;
int result = 0;
int number = 0;
Scanner reader = new Scanner(System.in);
System.out.println("Please enter a number: ");
number = reader.nextInt();
while (j <= number / 2)
{
if (number % j == 0)
{
result = 1;
}
j++;
}
if (result == 1)
{
System.out.println("Number: " + number + " is Not Prime.");
}
else
{
System.out.println("Number: " + number + " is Prime. ");
}
}
条件if (number % j == 0)
询问是否可以number
被整除j
素数的定义是
一个只能被自己和1整除的数字
因此,如果您测试2到number之间的所有数字,并且没有一个数字能被整除,则它是质数,否则就不是质数。
当然,您实际上不必一路前进number
,因为number
不能被一半以上的东西完全整除number
。
本节将通过增加j的值进行操作,如果我们假装number
= 12,则它将通过j
= 2,3,4,5,6
int j = 2;
.....
while (j <= number / 2)
{
........
j++;
}
result
如果在任何点number
都可被整除,则此部分设置为1 j
。一旦设置为1,result
就永远不会 复位 为0。
......
if (number % j == 0)
{
result = 1;
}
.....
当然,您可以进一步提高它,因为您实际需要的不高于sqrt(number)
此,但是此代码段决定不这样做。您不需要继续走高的原因是因为(例如)如果40可以被4整除,那么它就是4 * 10,则不需要测试4和10。并且在这对对中始终会在下面sqrt(number)
。
还值得注意的是,它们似乎打算result
用作布尔值,但实际上使用整数0和1来表示true和false。这不是一个好习惯。
下面的代码片段检查给定的数字是否是素数。有人能给我解释一下为什么会这样吗?这段代码在Java考试的学习指南中。
问题内容: 我想用JUnit测试来验证Java中集合的排序算法。如果我在集合中输入“ B”,“ C”,“ A”并希望对其进行排序(例如,按字母顺序排列),那么使用JUnit进行测试的正确方法是什么? 我实现了Comparable接口,并希望确保排序工作正常。 我想这个问题可以从Java或JUnit扩展到任何语言的常规测试。 问题答案: 我将按 预期的 顺序创建另一个具有值的集合,然后仅检查结果是否
问题内容: 如何测试Selenium RC中关注的元素? 问题答案: 以下定位器应在文档中选择活动元素: 如果表单字段或类似元素具有焦点,则它应该是活动元素。希望这可以帮助。
主要内容:数据采样,置信区间可以使用统计信息和分析来监控访问者的操作,以确定产生更高转换率的版本。 A/B测试结果通常以精美的数学和统计术语给出,但数字背后的含义其实很简单。 有两种重要的方法可以通过它们检查A/B测试的转换率 - 数据采样 置信区间 下面详细讨论这两种方法。 数据采样 样本数量取决于执行的测试次数。 转化率的计数称为样本,收集这些样本的过程称为采样。 示例 假设您有两种产品A和产品B,想要根据市场需求收集样
selenium是一个非常棒的Web软件测试工具,他对Ajax支持非常好,本人强烈推荐。 软件测试里很重要的一部,就是定位页面的元素,selenium提供如下强大的定位元素的方法。 ● id=id ● name=name ● dom=javascriptExpression ● xpath=xpathExpression ● link=textPattern ● c
我有一个表“MyService”,对两列(名称空间和名称)有唯一的约束,Id是主键名称|类型| |-------------------id |长| |命名空间|字符串| |名称|字符串| |值|字符串| 我想编写单元测试以确保用户不能插入具有相同(命名空间和值)的新行。所以我这样编码: 我有两个问题: 据我所知,如果实体不存在,jparepository将插入,如果实体存在,jpareposit