java语言 打印素数实例

时间:2022-12-07 03:27:08

//根据定义判断素数---循环n-1次,当n很大时循环n次

public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        boolean isPrime = true;
        int x = in.nextInt();
        if(x == 1)
        {
            isPrime = false;
        }
        for(int i = 2;i<x;i++)
        {
            if(x%i == 0)
            {
                isPrime = false;
                break;
            }
            
        }
        
        if(isPrime)
        {
            System.out.println(x+"是素数");
        }
        else
        {
            System.out.println(x+"不是素数");
        }
    }

//当n很大时,循环n/2次

public static void main(String[] args) {
        // TODO Auto-generated method stub
        //去掉偶数后,从3到x-1,每次加2
            //如果是偶数,立刻pass掉
            //否则就开始循环
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        boolean isPrime = true;
        if(x == 1||x!=2 && x%2 == 0)
        {
            isPrime = false;
        }
        else
        {
            for(int i = 3; i<x ;i = i+2)
            {
                if(x % i == 0)
                {
                    isPrime = false;
                    break;
                }
            }
        }
        
        if(isPrime)
        {
            System.out.println(x+"是素数");
        }
        else
        {
            System.out.println(x+"不是素数");
        }

    }

//循环n的平方根次

public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        //判断x的平方根次
        
        Scanner in = new Scanner(System.in);
        boolean isPrime = true;
        int x = in.nextInt();
        if(x == 1 || x % 2==0 && x!=2 )
        {
            isPrime = false;
        }
        else
        {
            for(int i = 3; i<=Math.sqrt(x); i += 2)
            {
                if( x%i ==0 )
                {
                    isPrime = false;
                    break;
                }
            }
        }
        
        if(isPrime)
        {
            System.out.println(x+"是素数");
        }
        else
        {
            System.out.println(x+"不是素数");
        }

//打印前50个素数

public static void main(String[] args) {
        // TODO Auto-generated method stub
        //打印前50个素数
        int[] primes = new int[50];
        primes[0] = 2;
        int cnt = 1;
        
        out:
        for(int x = 3;cnt<50;x++)
        {
            for(int i = 0;i<cnt;i++)
            {
                if( x%primes[i] == 0)
                {
                    continue out;
                }
            }
            
            //当内层for循环执行完后,若没有执行if内的执行体,则顺序执行当前代码,将x写入数组
            primes[cnt++] = x;
            
        }
        
        for(int k:primes)
        {
            System.out.print(k+" ");
        }
        System.out.println(cnt);
    }

//打印100以内的素数

public static void main(String[] args) {
        // TODO Auto-generated method stub
        //构造100以内的素数表(以计算机的思维)
        boolean[] isPrime = new boolean[100];
        for(int i = 0; i<isPrime.length;i++)
        {
            isPrime[i] = true;
        }
        
        for(int i = 2;i<isPrime.length;i++)
        {
            if(isPrime[i])
            {
                for(int k = 2; i*k<isPrime.length;k++)
                {
                    isPrime[i*k] = false;
                }
            }
        }
        
        for(int i = 2; i<isPrime.length;i++)
        {
            if(isPrime[i])
            {
                System.out.print(i+" ");
            }
        }

    }