gpt4 book ai didi

java - 检查素数的类不能正常工作

转载 作者:行者123 更新时间:2023-12-01 06:15:24 27 4
gpt4 key购买 nike

我为与素数相关的所有内容创建了一个名为 Primes 的类。它包含一个名为 isPrime 的方法,该方法使用另一个名为 sieveOfAtkin 的方法来创建一个名为 sieve 的 boolean 数组,该数组的索引值从 0 到 1000000。用户将整数 n 传递给 isPrime 方法。如果 sieve[n]=true,则整数 n 是素数。否则 isPrime 返回 false。我的问题是,当我使用我知道的质数测试此方法时,它总是返回 false。以这行测试 13 是否为素数的代码为例:

public class Test {
public static void main(String[] args) {
Primes pr=new Primes(); // Creates Primes object
System.out.println(pr.isPrime(13));
}
}

即使我们知道 13 是素数,输出也是 false。这是我整个 Primes 类的代码 https://github.com/javtastic/project_euler/blob/master/Primes.java

它使用阿特金筛,这被认为是测试素数的最有效方法。有关详细信息,请参阅此处:http://en.wikipedia.org/wiki/Sieve_of_Atkin

我不完全确定我做错了什么。我已经尝试了几个小时来找出导致此错误的原因,但我仍然得到相同的结果(一切都是错误的)。也许我应该找到一种不同的方法来检查素数?

最佳答案

使用这个:

public static boolean isPrime(int number) {
int sqrt = (int) Math.sqrt(number) + 1;
for (int i = 2; i < sqrt; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}

关于java - 检查素数的类不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26373641/

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