Java 用for循环检查素数
需要运行一个代码,该代码遍历从2到-number的数字,并在isPrime方法中给出一个关于输入数字的布尔值。 不管我输入了什么,我总是得到“真”,7,28等等Java 用for循环检查素数,java,Java,需要运行一个代码,该代码遍历从2到-number的数字,并在isPrime方法中给出一个关于输入数字的布尔值。 不管我输入了什么,我总是得到“真”,7,28等等 // Import statement: import java.util.ArrayList; class PrimeDirective { // Add your methods here: public boolean isPrime(int number) { int prime = 0;
// Import statement:
import java.util.ArrayList;
class PrimeDirective {
// Add your methods here:
public boolean isPrime(int number) {
int prime = 0;
int checkPrime = number % 1;
if (number == 2) {
return true;
}
if (number < 2) {
return false;
}
for (int i = 2; i < number; i++) {
if (number % i == 1) {
return true;
} else {
return false;
}
}
}
public static void main(String[] args) {
PrimeDirective pd = new PrimeDirective();
int[] numbers = { 6, 29, 28, 33, 11, 100, 101, 43, 89 };
System.out.println(pd.isPrime(7));
}
}
//导入语句:
导入java.util.ArrayList;
类素数指令{
//在此处添加您的方法:
公共布尔iPrime(整数){
整数素数=0;
int checkPrime=数字%1;
如果(数字==2){
返回true;
}
如果(数字<2){
返回false;
}
for(int i=2;i
更容易检查数字是否为素数。您的代码如下所示:
for(int i = 2; i < number; i++)
if (number % i == 0 && number != i)
return false;
return true;
for(int i=2;i
如果只检查数字的一半,您可以找到结果并优化代码,因为理想情况下,我们只需要检查数字的平方根
public boolean isPrime(int number){
for(int i=2;i<number/2;i++)
if(number%i==0)
return false;
return true;
}
public boolean isPrime(整数){
对于(inti=2;i首先,只需通过先除以2来消除2,然后允许您检查奇数的可除性
public boolean isPrime(int v) {
if (v == 1 || v%2 == 0) {
return false;
}
// then you just need to check for divisibility up to the
// square root of the number.
int max = (int)Math.sqrt(v) + 1;
for (int i = 3; i <= max; i+=2) {
if (v % i == 0) {
return false;
}
}
return true;
}
public boolean isPrime(int v){
如果(v==1 | | v%2==0){
返回false;
}
//然后你只需要检查整除到
//数字的平方根。
int max=(int)Math.sqrt(v)+1;
对于(inti=3;i侧注:阅读关于正确的Java代码缩进的内容{在一行末尾用大括号括起来,并且始终使用相同的缩进。这些事情很重要。它们使您的代码易于阅读或难以阅读。另外:请在发布问题之前进行适当的研究。您不可能是第一个就isPrime()问问题的人。如果number=1
,您的方法将返回true
,这是错误的,因为1
不是素数。此外,不需要检查number/2
。检查数字的sqrt(<代码>非常不必要的检查。这里的数学不太清楚,为什么平方根?考虑一些像19的数字。如果19可被2整除以给出<代码> q>代码>,那么19也可以被<代码> q>代码>分割为2。如果按3给出<代码> s>代码>,也可以通过<代码> s>代码>给出3。所以将来的划分已经C了。没有。一个人可以停止寻找的点是当k*k=19
或平方根上方的下一个数字。对于19,这将是5。另一种看待它的方式是,如果任何number>sqrt(n)
除以n
,那么肯定有一个number
也可以对n
进行除法。因此,只需对sqrt(n)
进行除法即可。