1 1 2 3 5 8 求这个数列100内最大的质数。
求一个JAVA程序!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-17 20:20:30的汇总数据:
    发帖数:2
    结贴数:0
    结贴率: 0.00%
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    把这个改一下估计可以满足您要的。最大计算10亿内质数的java程序,将来发一个超大数的程序 顶一下
    顶的人数//10以内质数4个  
    //100以内质数25个  
    //1000以内质数168个  
    //10000以内质数1229个   
    //100000以内质数9592个  
    //1000000以内质数78498个  
    //10000000以内质数664579个  
    //100000000以内质数5761455个  
    //1000000000以内质数50847544个  public class Main {  
        public static void main(String[] args) {  
            double kssz=2;//开始数字  
            double jssz=1000000000;//结束数字  
            int zsjs=1;//质数个数计数  
            if ((kssz>jssz)||(kssz<0)||(kssz==1)||(jssz<0)||(kssz!=Math.floor(kssz))||(jssz!=Math.floor(jssz))){//验证开始数字和结束数字的关系  
                System.out.println("错误!开始数字必须为大于1的整数且小于结束数字,请重新输入!");  
            }else{  
                while (kssz<=jssz){//在开始数字和结束数字之间运算  
                    double yzks=2;//验证开始范围  
                    double yzjs=Math.floor(Math.sqrt(kssz));//验证结束范围  
                    int zccs=0;//整除次数计数  
                    while (yzks<=yzjs){//在验证范围内验证是否为质数  
                        if (zccs>0) {//整除次数超过0就不是质数则退出验证  
                            break;  
                        }else{  
                            if(kssz/yzks==Math.floor(kssz/yzks)){//判断是否为整除  
                                zccs=zccs+1;//整除次数累加  
                            }  
                        }  
                        yzks=yzks+1;//验证开始范围累加  
                    }  
                    if (zccs==0){//只有等于0才能判断这是质数  
                        System.out.println("验证的第"+zsjs+"个质数是"+kssz);//显示计算出的质数  
                        zsjs=zsjs+1;//质数个数累加  
                    }  
                    kssz=kssz+1;//开始数字累加  
                }  
            }  
        }  
    }   
      

  3.   


    public class Test
    {
        public static void main(String[] args)
        {
            System.out.println(getMaxPrime());
        }
        
        public static boolean isPrime(int num)
        {
            for(int i = 2; i < Math.sqrt(num); i++)
            {
                if(num % i == 0)
                {
                    return false;
                }
            }
            
            return true;
        }
        
        public static int getMaxPrime()
        {
            int a = 1;
            int b = 1;
            int ret = b;
            
            while(b < 100)
            {
                if(isPrime(b))
                {
                    ret = b;
                }
                
                b = b + a;
            }
            
            return ret;
        }
    }
      

  4.   

    楼上对序列的考虑不全public class Test
    {
        public static void main(String[] args)
        {
            System.out.println(findMax());
        }    private static int findMax()
        {
            int i = 1, j = 1, ok = 0;
            int k = i + j;
            while (k < 10)
            {
                if (checkPrime(k))
                {
                    ok = k;
                }
                i = j;
                j = k;
                k = i + j;
            }
            return ok;
        }    private static boolean checkPrime(int kssz)
        {
            double yzks = 2;// 验证开始范围
            double yzjs = Math.floor(Math.sqrt(kssz));// 验证结束范围
            int zccs = 0;// 整除次数计数
            while (yzks <= yzjs)
            {// 在验证范围内验证是否为质数
                if (zccs > 0)
                {// 整除次数超过0就不是质数则退出验证
                    break;
                }
                else
                {
                    if (kssz / yzks == Math.floor(kssz / yzks))
                    {// 判断是否为整除
                        zccs = zccs + 1;// 整除次数累加
                    }
                }
                yzks = yzks + 1;// 验证开始范围累加
            }
            if (zccs == 0)
            {// 只有等于0才能判断这是质数
                return true;
            }
            return false;
        }
    }
      

  5.   

    hoho,不好意思,刚才确实搞错了
    public class Test
    {
        public static void main(String[] args)
        {
            System.out.println(getMaxPrime());
        }
        
        public static boolean isPrime(int num)
        {
            if(num < 2)
            {
                return false;
            }
            
            for(int i = 2; i <= Math.sqrt(num); i++)
            {
                if(num % i == 0)
                {
                    return false;
                }
            }
            
            return true;
        }
        
        public static int getMaxPrime()
        {
            int a = 1;
            int b = 1;
            int ok = a + b;
            int ret = b;
            
            while(ok < 100)
            {
                if(isPrime(ok))
                {
                    ret = ok;
                }
                
                a = b;
                b = ok;
                ok = a + b;
            }
            
            return ret;
        }
    }
      

  6.   

    class test
    {
    int t,max,m=1,n=1;
    public static void main(String ar[])
    {
    for(int i=1;i<100;i++)
     { max=ss(m+n);t=m;m=i;n=n+t;}
    System.out.print(max); 
    }
    public int ss(int b)
    {for(int i=2;i<b;i++)
    if(b%i==0)
    return 0;
    return b;
    }
    }