2007年2月18日

public   class  Prime  {
    
public   static   void  main(String[] args)  {
        
long  timeStart  =  System.currentTimeMillis();
        
int [] prime_array  =   new   int [ 10000 ]; // 用来保存10万以下的质数(共9592个)
        prime_array[ 0 ] = 3 ;
        prime_array[
1 ] = 5 ;
        
int  i,primeId =- 1 ,m = 2 ,prime;
        
// System.out.println(2); // 质数2直接打出^_^
         for  ( int  a  =   3 ; a  <=   100000 ; a  +=   2 {
            
if (m * m < a) {
                
// 避免使用sqrt()
                m ++ ;
            }

            
for  (i = 0 ;(prime = prime_array[i]) <= m;i ++ {
                
if  (a  %  prime  ==   0 {
                    
break ;
                }

            }

            
if  (prime > m)  {
                prime_array[
++ primeId] = a;
                
// 10万以下的质数存起
                
// System.out.print(a+" ");
            }

        }

        System.out.println(
" 计算10万以下的质数(共 " + (primeId + 2 ) + " 个)耗时 " + (System.currentTimeMillis() - timeStart) + " 毫秒. " );
        
int  maxNum = 100000000 ;
        
for ( int  a  =   100001 ; a  <=  maxNum; a  +=   2 ) {
            
if (m * m < a) {
                
// 避免使用sqrt()
                m ++ ;
            }

            
for  (i = 0 ;(prime = prime_array[i]) <= m;i ++ {
                
if  (a  %  prime  ==   0 {
                    
break ;
                }

            }

            
if  (prime > m)  {
                
++ primeId;
                
// System.out.print(a+" ");
            }

        }

        System.out.println(maxNum
+ " 以下共 " + (primeId + 2 ) + " 个质数. " );
        System.out.println(
" 耗时 " + (System.currentTimeMillis() - timeStart) + " 毫秒. " );
    }

}

posted @ 2007-02-18 21:20 zero 阅读(400) | 评论 (1)编辑 收藏
 
今天开始看java,我写的第一个东东~

1public class HelloWorld {
2    public static void main(String[] args) {
3        System.out.println("Hello World!");
4    }

5}

6
posted @ 2007-02-18 21:17 zero 阅读(128) | 评论 (1)编辑 收藏