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

Нахождение простых чисел методом "Решето Эратосфена" Реализация на 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;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 < N; i++)
    return f[i] = false;
    for (int i = 2; i < Math.sqrt(N); i++) {
    do {
    return i;

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

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

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

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

    }

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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