gpt4 book ai didi

java - 素数代码

转载 作者:行者123 更新时间:2023-12-01 23:25:48 25 4
gpt4 key购买 nike

首先我要说的是,我知道有很多关于素数的问题,这更多的是关于我的代码,特别是 boolean 语句。

public class SumPrime
{


public static void main(String[] args) {


int top = inputInt("enter the number please");
int sum;
if (top > 2) {
sum = 2;
} else {
sum = 0;
}
int i;
int l;

for(l=3; l<top; l+=2){

boolean k = test(l);
String r;
if(k = true){
sum=sum+l;

output(l);
}else {
sum=sum;
}

}
System.out.println("The sum is " + sum);
}


static boolean test(int v) {

if (v%2==0)
return false;
for(int i=3; i<v; i+=2) {
if(v%i==0)
return false;
}
return true;
}

我正在尝试编写一个程序,该程序将给出输入值以下的素数之和。在上面的代码下面,我有输入/输出语句,所以这不是问题。至少对我来说,这段代码似乎应该没有问题。我对java比较陌生,对 boolean 变量和语句也很陌生,所以这很容易出现问题。 (我寻找答案,但一无所获)

测试子程序应该检查一个数字是否是质数,如果是则返回 true,如果不是则返回 false。它似乎对每个值都返回 true,即使对于非素数也是如此。如果我输入 10 作为上限,程序将返回 26 的总和,而不是 17。尽管它应该检查素数,但它似乎包括每个奇数。

我不明白为什么这段代码不起作用。就像我说的,我认为该错误与 boolean 方法有关。

最佳答案

如果你用这个测试 9,则测试 i < 9。当 i = 9 时,for 循环中止并返回 true

static boolean test(int v) {

if (v%2==0)
return false;
for(int i=3; i<v; i+=2) {
if(v%i==0)
return false;
}
return true;
}

编辑:

此外,您永远不应该测试超过目标数一半的素数,理想的最大值是 sqrt(x) + 1

关于java - 素数代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20026577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com