我已经写了一个函数,使用Eratosthenes方法筛选素数。该函数使用整数工作正常,但我现在试图长期支持,以便我可以处理大量数据。Java数据类型问题
我似乎无法得到与多头工作的功能,并无法看到明显的原因。
错误指的是典型的精密警告从类型转换等,但我不能工作是什么导致他们:
./com/wkilgour/lang/Maths.java:21: error: possible loss of precision
boolean[] isPrime = new boolean[n + 1];
^
required: int
found: long
./com/wkilgour/lang/Maths.java:24: error: possible loss of precision
isPrime[i] = true;
^
required: int
found: long
./com/wkilgour/lang/Maths.java:27: error: possible loss of precision
if (isPrime[i])
^
required: int
found: long
./com/wkilgour/lang/Maths.java:29: error: possible loss of precision
isPrime[i * j] = false;
^
required: int
found: long
4 errors
下面是函数:
public static boolean[] primeSieve(long n)
{
boolean[] isPrime = new boolean[n + 1];
for (long i = 2L; i <= n; i++)
isPrime[i] = true;
for (long i = 2L; i*i <= n; i++)
if (isPrime[i])
for (long j = i; i*j <= n; j++)
isPrime[i * j] = false;
return isPrime;
}
任何帮助将不胜感激!
是不是你的错误信息有点长? –
是的,有一些与精度有关的错误。我已经添加了完整的错误 – Wesk
你有没有想过你需要多少内存,才能知道数字的“最大”值? –