java面向对象设计求素数错误求解
第一部分是判断,,第三部分是1到100,public class CountPrime{
boolean prime(int x){
for (int i=2;i<=x;i++){
if(x%i==0)
prime=false;
break;
}
}
第二部分是用无限区间return prime;
CountPrime(int m,int n){
for(int x=m;m<=n;x++){
if(prime(x)){
System.out.println(x);
}
}
}
最后用类和对象求输出第三个
void test(){
CountPrime(1,100);
}
public static void main(String[] args) {
CountPrime cp=new CountPrime();
cp.test();
}
}
也请将正确的代码发送到:kylezhe@gmail.com --------------------编程问答--------------------
/** AKS素性测试 根据素数定义:有A=n平方+b=(n-x)(n+y),若除n-x=1以外无正整数,则A为素数。 设A为代验证数 求b=A-n平方--------------------编程问答-------------------- 普通方法:
* (b=<2n). 代入: y=(b+nx)/(n-x) (x<n-1) 若y无正整数解,则A为素数。注意:x<n-1,而且n-x必为奇数, */
public static void isPerNum(int num){
int n = (int)Math.sqrt(num) ;
int b = (int)(num - Math.pow(Math.floor(Math.sqrt(num)) , 2)) ;
if(b == 0){
System.out.println("is perNum") ;
return ;
}
boolean f = false ;
for(int i = 1 ; i < n - 1 ; i ++ ){
if((n + i) % 2 == 0) continue ;
if((double)(b + n * i) / (n - i) * 10 % 10 == 0){
System.out.println("(" + b + "+" + n + "*" + i + ")/(" + n + "-" + i + ")") ;
System.out.println((double)(b + n * i) / (n - i) + "---" + i) ;
f = true ;
break ;
}
}
if( ! f) System.out.println("is perNum") ;
}
public static boolean isPrimeNum(int prime , BigDecimal base){--------------------编程问答--------------------
if(base.intValue() < 2){
System.out.println("基数必须大于2") ;
return false ;
}
return base
.pow(prime)
.subtract(base)
.remainder(new BigDecimal(prime))
.equals(BigDecimal.ZERO)?true : false ;
}
谢谢你的回答,但是我想要 用我那种方法写的程序!只不过我的那个油错误,却不知道在哪里 --------------------编程问答-------------------- prime函数没有返回值。
里面的break应括在if里。 --------------------编程问答-------------------- LS说的没有返回值
--------------------编程问答--------------------
public class CountPrime{
boolean prime(int x){
for (int i=2;i<=x;i++){
if(x%i==0){
return false;
}
}
}
还是没有返回值 --------------------编程问答--------------------