Задание 25. Информатика. ЕГЭ. Поляков-2590

Просмотры: 87
Изменено: 24 ноября 2024

(Д.Ф. Муфаззалов) Определите количество простых чисел в диапазоне \( [2; \,\, 3577000]\).

Решение:

Python


def sieve(N):
    a = [1]*(N+1)

    a[0] = 0
    a[1] = 0

    for x in range(2, int(N**0.5) + 1):
        if a[x]:
            for i in range(x**2, N+1, x):
                a[i] = 0
                
    primes = []
    for x in range(2, N+1):
        if a[x]:
            primes.append(x)
    
    return primes

print(len(sieve(3577000)))

Java


import java.util.ArrayList;

public class EGE2590 {

    static ArrayList<Integer> Sieve(int N) {
        int a[] = new int[N];
        a[0] = 0;
        a[1] = 0;
        for(int i = 0; i < N; i++) {
            a[i] = 1;
        }
        for(int i = 2; i < (int) Math.sqrt(N) + 1; i++) {
            if(a[i] == 1) {
                for(int j = i*i; j < N; j += i) {
                    a[j] = 0;
                }
            }
        }
        ArrayList<Integer> primes = new ArrayList<Integer>();
        for(int i = 2; i < N; i++) {
            if(a[i] == 1) {
                primes.add(i);
            }
        }
        return primes;

    }
    public static void main(String argv[]) {
        ArrayList<Integer> primes = Sieve(3577000);
        System.out.println(primes.size());
    }
}

Ответ: 255203