Простые числа (Решето Эратосфена)

Нахождение простых чисел методом "Решето Эратосфена" Реализация на Java:
public class Primes {
 
	private boolean primes[];
 
	public Primes(int number){
		primes = new boolean[number+1];		
		Arrays.fill(primes, true);
		primes[0] = false;
		primes[1] = false;
		for(int i = 2;i*i  number;i++){
			if(primes[i]){
				for(int j=i*i;j  number;j+=i){
					primes[j] = false;
				}
			}
		}
 
	}
 
	public boolean check(int number){
		return primes[number];
	}
 
}
Применение:
int N = 100;
Primes primes = new Primes(N);
for(int i=0;iN;i++){
	if(primes.check(i)){
		System.out.println(i + " ");	
	}
}

Один ответ

  1. Sergej:

    привет, мне нужна помощь.
    помоги исправить ошибки
    Array f[] не должны быть изменен!
    f[] содержит информацию из решета Эратосфена, для четных чисел место здесь нет.
    зарание благодарю

    public class XY {
    static final int N = 12345;
    static byte f[] = new byte[(N + 1) / 2];

    public static void main(String[] args) {
    System.out.println(sieve());
    System.out.println(twinPrime());
    System.out.println(countPrime());
    }

    private static int sieve() {
    int prime;
    for (int i = 3; i return f[i] = false;
    for (int i = 2; i do {
    return i;

    } while (f[i] = true);
    for (int j = i * i; j return f[j] = true;
    }
    }
    for (int i = Math.sqrt(N) + 1; i do {
    return i;

    } while (f[i] = true);
    }
    return i = prime;
    }

    private static int twinPrime() {
    for (int n = 1; n if (((6 * n — 1) % 2 != 0) && ((6 * n + 1) % 2 != 0)) {
    return Integer.parseInt((n + "*"));
    }
    }
    }

    private static int countPrime() {
    return Integer.bitCount(twinPrime());
    }

    }

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.