📜  埃拉托色尼筛 - Java 代码示例

📅  最后修改于: 2022-03-11 14:52:20.250000             🧑  作者: Mango

代码示例2
import java.util.Scanner;

public class BooleanPrimes
{

    public static int counter = 0 ;
    public static void main(String[] argh)
    {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter a number: ");
        int size = scanner.nextInt();
        boolean[] boolArray = new boolean[size+1];
        printArray( generateBoolArray(boolArray,size+1),size);
    }

    public static boolean[] generateBoolArray(boolean[] boolArr, int size) // initializing boolean array with true values
    {
        for (int i = 2; i < size; ++i)
        {
            boolArr[i] = true;
        }
        return chickIfIndexPrime(boolArr, boolArr.length,size);
    }

    public static boolean[] chickIfIndexPrime(boolean[] arrIsPrime, int input, int size)
    {
        int start = 2;
        while (start*start <= input) // first+second loop checking if start is prime
        {
            int i = 2;
            boolean isprime = true;
            while(i*i < start && isprime ) // second loop
            {
                if(start%i == 0)
                {
                    isprime = false;
                }
                ++i;
            }
            if(isprime==true)
            {
                for(int j=4; j=arrIsPrime.length)
                            {
                                break;
                            }
                        }
                        arrIsPrime[j]=false;
                    }
                }
            }
            ++start;

        }
        return arrIsPrime;
    }



    public static void printArray(boolean[] arr ,int size){
        System.out.println("The prime numbers from 2 till "+(size));
        int i=0,j = 0 ;
        while(i