【发布时间】:2026-01-29 02:45:02
【问题描述】:
我为与素数相关的所有内容创建了一个名为 Primes 的类。它包含一个名为 isPrime 的方法,该方法使用另一个名为 sieveOfAtkin 的方法,该方法创建一个名为 sieve 的布尔数组,其索引值从 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 是质数,输出也是错误的。这是我的整个 Primes 类的代码https://github.com/javtastic/project_euler/blob/master/Primes.java
它使用阿特金筛,这被认为是测试素数的最有效方法。更多信息可以在这里找到:http://en.wikipedia.org/wiki/Sieve_of_Atkin
我不完全确定我做错了什么。我已经尝试了几个小时来找出导致此错误的原因,但我仍然得到相同的结果(一切都是错误的)。也许我应该找到另一种检查素数的方法?
【问题讨论】:
-
代码有效,我已粘贴输出
-
如果你使用像 Atkin 这样复杂的算法,而像 Erothosthenes 这样更简单的算法就能完成工作,那是在浪费你的时间。
标签: java