编写输出前50个质数的程序,我想尝试使用已有的java.math.BigInteger中的isProbablePrime方法,但是出现了错误:F:\JAVA\exercise\primes.java:9: 找不到符号
符号: 方法 isProbablePrime(int)
位置: 类 primes
if(isProbablePrime(i))
^
1 错误该方法API的API描述如下:如果该 BigInteger 可能是素数,则返回 true ;如果它很明确是一个合数,则返回 false 。 参数 certainty 是对调用者愿意忍受的不确定性的度量:如果该数是素数的概率超过了 1 - 1/2**certainty方法,则该方法返回 true 。执行时间正比于参数确定性的值。 我的理解是:我程序中isProbablePrime的参数是int类型的,而API中描述的是BigInteger类型的。 请问:1.是不是这个错误?
2.参数 certainty 是对调用者愿意忍受的不确定性的度量:如果该数是素数的概率超过了 1 - 1/2**certainty方法,则该方法返回 true 。执行时间正比于参数确定性的值。 这后半段话是什么意思?(没看懂)
3.如果这个方法行不通,有没有类似的方法可以使用。
该程序的源代码如下:
import java.math.*;
class primes
{
public static void main(String[] args)
{
int count=0;
for(int i=0;;i++)
{
if(isProbablePrime(i))
System.out.println(i+"\t");
count++;
if(count==49)
break;
}
}
}
符号: 方法 isProbablePrime(int)
位置: 类 primes
if(isProbablePrime(i))
^
1 错误该方法API的API描述如下:如果该 BigInteger 可能是素数,则返回 true ;如果它很明确是一个合数,则返回 false 。 参数 certainty 是对调用者愿意忍受的不确定性的度量:如果该数是素数的概率超过了 1 - 1/2**certainty方法,则该方法返回 true 。执行时间正比于参数确定性的值。 我的理解是:我程序中isProbablePrime的参数是int类型的,而API中描述的是BigInteger类型的。 请问:1.是不是这个错误?
2.参数 certainty 是对调用者愿意忍受的不确定性的度量:如果该数是素数的概率超过了 1 - 1/2**certainty方法,则该方法返回 true 。执行时间正比于参数确定性的值。 这后半段话是什么意思?(没看懂)
3.如果这个方法行不通,有没有类似的方法可以使用。
该程序的源代码如下:
import java.math.*;
class primes
{
public static void main(String[] args)
{
int count=0;
for(int i=0;;i++)
{
if(isProbablePrime(i))
System.out.println(i+"\t");
count++;
if(count==49)
break;
}
}
}
解决方案 »
- 怎么样得到时间差的秒数.
- 请问我这个关于继承的代码为什么在MyEclipse中运行时并没有错误提示,但就是无法显示结果呢?
- 字符串转换成数组
- 变量赋值问题
- 请问为什么int常量可以直接赋给byte,short,而double常量不能直接赋给float?
- vb.net 与 java 的问题。。。大家帮帮忙阿。。。
- 请问怎么将windows的区域编码比如2056,1033之类的转换成Java的Locale啊?
- 如何使用Runtime.getRuntime.exec()函数实现 mysql的数据库操作命令:mysql db < db.sql
- 怎样使一个JFrame不能被最大化?
- Server returned HTTP response code: 502 for URL: ???急急急!!!
- 本菜鸟前来报道!献上百分送各位前辈。
- 在LINUX/WINDOWS下JAVA通过JDBC连接MYSQL的问题
---参数不对
---调用其他类的静态方法要按照类.方法()的形式参数 certainty 是对调用者愿意忍受的不确定性的度量:如果该数是素数的概率超过了
1 - 1/2**certainty方法,则该方法返回 true 。由于此函数只是对某个数是否是素数进行简单的测试,(有很多测试素数的方法,可能Java采用的是其中的一种),因而测试就有概率问题,该方法认为该数是素数的概率超过了1-1/2**certainty的话,就认为此数是素数,于是返回true,当然这可能会出错,即对某些合数也可能在一定的概率内被它认为是素数,即所谓的"伪素数".
class Test
{
public static void main(String[] args)
{
int count=0;
BigInteger big=null;
for(int i=1;;i++)
{
big=new BigInteger(new Integer(i).toString());
if(big.isProbablePrime(50))
{
System.out.println(i+"\t");
count++;
}
if(count==49)
break;
}
}
}