Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.arsen.prime;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.ArrayList;
- public class Prime {
- public static final int[] PRIME_ARRAY16 = generatePrimeArray16();
- //private static ArrayList<Integer> PrimeList16 = new ArrayList<>();
- private static int[] generatePrimeArray16() {
- System.out.println("generating array of 65536 primes...");
- double startT = System.currentTimeMillis();
- int[] list = new int[65536];
- list[0] = 2;
- list[1] = 3;
- int nextGuess;
- for(int i=2; i<65536;i++) { // для всех ячеек в списке
- nextGuess = list[i-1];
- do { // цикл
- nextGuess +=2; // следующее возможное число = предыдущее + 2
- }while(! isPrimeBrute(nextGuess,list)); // повторять пока это не простое число
- list[i] = nextGuess; // найденное число записать в список
- //if (i%1000==0) System.out.printf("%d numbers was generated\n",i);
- }
- double elapsedT = System.currentTimeMillis() - startT;
- System.out.printf("array of 65536 primes was generated in %.3f seconds\n", elapsedT/1000);
- return list;
- }
- public static boolean isPrimeBrute(int n) {
- if (n%2==0 | n<2) return false;
- if (n==2) return true;
- for(int div=3;div<=Math.sqrt(n); div+=2) {
- if (n%div==0) return false;
- }
- return true;
- }
- /*
- * private static void genderatePrimeList16() {
- * System.out.println("generating list of 65536 primes..."); double startT =
- * System.currentTimeMillis(); PrimeList16.add(2); PrimeList16.add(3);
- *
- * int nextGuess;
- *
- * for(int i=2; i<65536;i++) { // для всех ячеек в списке nextGuess =
- * PrimeList16.get(i-1); do { // цикл nextGuess +=2; // следующее возможное
- * число = предыдущее + 2 }while(! isPrimeFast(nextGuess)); // повторять пока
- * это не простое число PrimeList16.add(nextGuess); // найденное число записать
- * в список //if (i%1000==0) System.out.printf("%d numbers was generated\n",i);
- * } double elapsedT = System.currentTimeMillis() - startT;
- * System.out.printf("list of 65536 primes was generated in %.3f seconds\n",
- * elapsedT/1000); }
- */
- private static boolean isPrimeFast(int n, int[] list) {
- if (n<2) return false;
- if (n==2) return true;
- for(int i=0; ;i++) { // цикл перебора существующих простых делителей
- if(n% list[i]==0)return false;
- if()
- }
- return true;
- }
- public static void printToFIleFormated(int[] array) throws IOException {
- PrintWriter writer = new PrintWriter (new FileWriter("primes.txt"));
- int l = Prime.PRIME_ARRAY16.length;
- for(int i=0; i<l; i++) {
- int n = Prime.PRIME_ARRAY16[i];
- writer.printf("%8d",n);
- if(i%20==0) writer.printf("\n");
- }
- writer.close();
- }
- public static int getPrimeFromList(int n) {
- if(PrimeList16.isEmpty()) genderatePrimeList16();
- return PrimeList16.get(n);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement