Skip to content

Instantly share code, notes, and snippets.

@hiroism007
Created April 21, 2013 08:41
Show Gist options
  • Save hiroism007/5428933 to your computer and use it in GitHub Desktop.
Save hiroism007/5428933 to your computer and use it in GitHub Desktop.
new eratosthenes written in Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.ArrayList;
/**
* Created with IntelliJ IDEA.
* User: 橘博之
* Date: 4/20/13
* Time: 4:37 PM
*/
public class Eratosthenes {
public static void main(String[] args) throws IOException {
System.out.println("素数を列挙します、数値を入力してください");
//初期化の処理
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = null;
//例外処理
try {
str = reader.readLine();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
int maxNum = Integer.parseInt(str);
boolean[]primes = new boolean[maxNum];
Arrays.fill(primes,true);
//素数を求めるメソッド
calculatePrimeNumbers(primes);
//素数リストを作成
ArrayList<Integer>primeNumbers = convertPrimeNumbersListFromArray(primes);
for(int i :primeNumbers) System.out.print(i + " ");
}
public static void calculatePrimeNumbers(boolean[] primes) {
for (int i = 2; i < primes.length; i++){
if(primes[i]) for (int j = i + i; j < primes.length; j += i) primes[j] = false;
}
}
public static ArrayList<Integer> convertPrimeNumbersListFromArray(boolean[] primes){
ArrayList<Integer>numbers = new ArrayList<Integer>();
for (int i = 2; i < primes.length; i ++){
if(primes[i]) numbers.add(i);
}
return numbers;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment