当前位置:编程学习 > JAVA >>

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 ;
    }
--------------------编程问答--------------------
引用 楼主 kylezhe 的回复:
第一部分是判断,,第三部分是1到100,
public class CountPrime{
boolean prime(int x){
        for (int i=2;i<=x;i++){
        if(x%i==0)
        prime=false;
        break;
        }
}
第二部分是用无限区间r……




谢谢你的回答,但是我想要 用我那种方法写的程序!只不过我的那个油错误,却不知道在哪里 --------------------编程问答-------------------- prime函数没有返回值。
里面的break应括在if里。 --------------------编程问答-------------------- LS说的没有返回值

public class CountPrime{
 boolean prime(int x){
         for (int i=2;i<=x;i++){
         if(x%i==0){
           return false;
         }
    }
 }
--------------------编程问答--------------------
引用 5 楼 zfyq124 的回复:
LS说的没有返回值
Java code?12345678public class CountPrime{ boolean prime(int x){         for (int i=2;i<=x;i++){         if(x%i==0){           return false;         }    } }


还是没有返回值 --------------------编程问答--------------------
Quote: 引用 6 楼 AARON7744 的回复:

引用 5 楼 zfyq124 的回复:LS说的没有返回值
quote]

手残了,一不小心,不淡定了

12345678public class CountPrime{ boolean prime(int x){ 
        for (int i=2;i<=x;i++){
         if(x%i==0){
           return false;
         } 
   }
   return true;
 }
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,