Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class Sieve {
- public static void main(String[] args) {
- System.out.println("Enter a number that is greater than 1 to show all prime numbers up to that number: ");
- Scanner inputScanner = new Scanner(System.in);
- if (inputScanner.hasNextInt())
- {
- int inputLimit = inputScanner.nextInt();
- if ( inputLimit < 2)
- {
- System.out.println("Please enter a positive whole number that is greater than 1.");
- }
- else
- {
- int[] allNumbersArray = new int[inputLimit-1];
- createSequence(allNumbersArray, inputLimit);
- sieve(allNumbersArray, inputLimit);
- printIntArray(allNumbersArray);
- }
- }
- else
- {
- System.out.println("Please enter a positive whole number that is greater than 1.");
- }
- inputScanner.close();
- }
- public static void createSequence (int[] allNumbersArray, int inputLimit)
- {
- for (int index=0; index < allNumbersArray.length; index++)
- {
- allNumbersArray[index] = index+2;
- }
- }
- public static String nonCrossedOutSubseqToString (int[] nonCrossedOutNumbers)
- {
- String nonCrossedOutSubseq = "";
- return nonCrossedOutSubseq;
- }
- public static String sequenceToString (int[] allNumbersArray)
- {
- String allNumbersString = "";
- return allNumbersString;
- }
- // sets multiples of number to number+N (N = inputLimit) in allNumbersArray
- public static void crossOutHigherMultiples (int[] allNumbersArray, int originalNumber)
- {
- for (int currentNumber=((2*originalNumber)-2); ((currentNumber+originalNumber)<= (allNumbersArray.length+1)); currentNumber+= originalNumber)
- {
- // if the number is not already crossed out
- if (allNumbersArray[currentNumber] < allNumbersArray.length+1)
- allNumbersArray[currentNumber] += (allNumbersArray.length+1);
- }
- }
- public static void sieve (int[] allNumbersArray, int inputLimit)
- {
- double sqrtLimit = Math.sqrt(inputLimit);
- for (int index=0; allNumbersArray[index] <= sqrtLimit; index++)
- {
- if (allNumbersArray[index] < inputLimit)
- {
- crossOutHigherMultiples(allNumbersArray, allNumbersArray[index]);
- }
- }
- }
- public static void printIntArray (int[] intArray)
- {
- System.out.println("");
- for ( int index =0; index < intArray.length; index++)
- {
- if (intArray[index] < intArray.length)
- System.out.print(intArray[index] + ", ");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement