Java Програма для друку Prime Numbers від 1 в 100

⚡ Розумний підсумок

Програма для друку простих чисел від 1 до 100 дюймів Java сканує кожне значення в діапазоні та видає ті, що мають рівно два дільники. У цій статті пояснюється визначення, метод перевірки, повна програма, решето Ератосфена та порівняння продуктивності з перевіреним виходом.

  • 🔢 Правило визначення: Просте число більше за 1 і ділиться лише на 1 та саме на себе, що повністю виключає 0 та 1.
  • 🔁 Сканування діапазону: Зовнішній цикл переходить від 2 до верхньої межі та делегує кожне значення методу перевірки, який можна використовувати повторно.
  • Булев метод: Функція CheckPrime повертає значення false для першого знайденого дільника та true, коли цикл завершується без збігу.
  • Границя дільника: Тестування до половини значення є правильним, і зупинкаping під квадратним коренем дає ту саму відповідь набагато швидше.
  • 🧮 Набір результатів: Рівно 25 простих чисел існує між 1 і 100, які закінчуються на 97.
  • Метод сита: Решето Ератосфена позначає кратні числа в булевому масиві та виконується за час O(n log log n).
  • 🧪 Практика перевірки: Перш ніж довіряти будь-якій реалізації, переконайтеся, що 2 включено, а 1 виключено.

Prime Numbers 1 до 100 в Java

Що таке просте число?

A Просте число — це число, яке ділиться лише на одиницю або на саме себе. Це натуральне число, більше за одиницю, яке не є добутком двох менших натуральних чисел. Наприклад, 11 ділиться лише на одиницю або на саме себе. Інші прості числа — це 2, 3, 5, 7, 11, 13, 17 тощо.

Примітка: 0 і 1 не є простими числами. 2 — єдине парне просте число.

Між числами від 1 до 100 знаходиться рівно 25 простих чисел. Сітка нижче групує їх за десятиліттями, що робить закономірність зменшення кількості простих чисел помітною зі зростанням значень.

Діапазон Prime Numbers Рахувати
1 - 20 2, 3, 5, 7, 11, 13, 17, 19 8
21 - 40 23, 29, 31, 37 4
41 - 60 41, 43, 47, 53, 59 5
61 - 80 61, 67, 71, 73, 79 5
81 - 100 83, 89, 97 3

Як друкувати Prime Numbers Від 1 до 100 програм Java

Нижче наведено Java програма для друку простих чисел від 1 до 100:

Логіка програми:

  • Основний метод програма простих чисел в Java містить цикл для перевірки простих чисел від 1 до 100 одне за одним.
  • Основний метод викликає метод CheckPrime визначити, чи є число простим числом у Java чи ні.
  • Нам потрібно поділити вхідне число, скажімо, 17, на значення від 2 до 17 і перевірити остачу. Якщо остача дорівнює 0, число не є простим.
  • Жодне число не ділиться більше ніж на половину самого себе. Тому нам потрібно пройтися по numberToCheck/2. Якщо вхідне число — 17, половина — 8.5, і цикл перебиратиме значення від 2 до 8.
  • If numberToCheck повністю ділиться на інше число, ми повертаємо значення false, і цикл розривається.
  • If numberToCheck є простим, ми повертаємо true.
  • В основному методі для простих чисел від 1 до 100 в Java, перевірте, чи isPrime є TRUE і додайте значення до простого числаNumbersЗнайдено рядок.
  • Нарешті, виведіть прості числа від 1 до 100 дюймів Java.

Виділення перевірки в окремий метод робить програму придатною для повторного використання. Той самий метод CheckPrime можна викликати з будь-якою верхньою межею, просто змінивши змінну maxCheck.

public class PrimeNumbers {

    public static void main(String[] args) {

        int i;
        int num = 0;
        int maxCheck = 100; // maxCheck limit till which you want to find prime numbers
        boolean isPrime = true;

        //Empty String
        String primeNumbersFound = "";

        //Start loop 2 to maxCheck
        for (i = 2; i <= maxCheck; i++) {
            isPrime = CheckPrime(i);
            if (isPrime) {
                primeNumbersFound = primeNumbersFound + i + " ";
            }
        }
        System.out.println("Prime numbers from 1 to " + maxCheck + " are:");
        // Print prime numbers from 1 to maxCheck
        System.out.println(primeNumbersFound);
    }
    public static boolean CheckPrime(int numberToCheck) {
        int remainder;
        for (int i = 2; i <= numberToCheck / 2; i++) {
            remainder = numberToCheck % i;
            //if remainder is 0 then the number is not prime and we break the loop. Else continue the loop
            if (remainder == 0) {
                return false;
            }
        }
        return true;

    }

}

Очікуваний результат:

Вивід простого числа від 1 до 100 у Java більшість квитків вже розпродано! буде:

Prime numbers from 1 to 100 are:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Значення 2 проходить, оскільки умова внутрішнього циклу i <= 2 / 2 оцінюється як 2 <= 1, що одразу є хибним, тому метод повертає true без жодного ділення.

Оптимізована версія з використанням межі квадратного кореня

Ділення до половини числа є правильним, але виконує зайву роботу. Дільники завжди зустрічаються парами навколо квадратного кореня, тому будь-який множник вище √n має партнера нижче нього, якого вже перевірили.

public class PrimeNumbersOptimized {

    public static void main(String[] args) {
        int maxCheck = 100;
        int count = 0;
        StringBuilder result = new StringBuilder();

        for (int i = 2; i <= maxCheck; i++) {
            if (isPrime(i)) {
                result.append(i).append(" ");
                count++;
            }
        }

        System.out.println("Prime numbers from 1 to " + maxCheck + " are:");
        System.out.println(result.toString().trim());
        System.out.println("Total primes found: " + count);
    }

    public static boolean isPrime(int n) {
        if (n <= 1) return false;
        if (n == 2) return true;
        if (n % 2 == 0) return false;

        // test only odd divisors up to the square root
        for (int i = 3; i * i <= n; i += 2) {
            if (n % i == 0) return false;
        }
        return true;
    }
}

вихід:

Prime numbers from 1 to 100 are:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Total primes found: 25

💡 Порада: StringBuilder замінює повторювану конкатенацію рядків усередині циклу. Кожна += у рядку створюється новий об'єкт, який стає вимірюваним, як тільки верхня межа досягає кількох тисяч.

Print Prime Numbers Використання решета Ератосфена

Коли потрібні всі прості числа в діапазоні, пробне ділення — неправильний інструмент. Решето Ератосфена будує логічний масив, позначає кратні кожного простого числа як складені та зчитує все, що залишилося непозначеним.

Метод працює у три кроки:

  1. Створіть логічний масив розміром n+1 та припустіть, що кожен індекс від 2 і вище є простим числом.
  2. Починаючи з 2, позначте кожне кратне поточного простого числа як складене.
  3. Перейдіть до наступного немаркованого індексу та повторюйте, доки не буде передано квадратний корінь з n.
import java.util.Arrays;

public class SieveOfEratosthenes {

    public static void main(String[] args) {
        int n = 100;
        boolean[] composite = new boolean[n + 1];

        for (int p = 2; p * p <= n; p++) {
            if (!composite[p]) {
                // start at p*p because smaller multiples are already marked
                for (int multiple = p * p; multiple <= n; multiple += p) {
                    composite[multiple] = true;
                }
            }
        }

        StringBuilder result = new StringBuilder();
        for (int i = 2; i <= n; i++) {
            if (!composite[i]) {
                result.append(i).append(" ");
            }
        }

        System.out.println("Prime numbers from 1 to " + n + " are:");
        System.out.println(result.toString().trim());
    }
}

вихід:

Prime numbers from 1 to 100 are:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Порівняння трьох підходів

Усі три програми друкують однакові 25 значень, тому вибір повністю залежить від розміру діапазону.

Підхід Складність часу Додаткова пам'ять Найкращий діапазон
Пробне ділення на n/2 O (n²) O (1) До кількох тисяч
Пробне ділення на √n O(n√n) O (1) До кількох сотень тисяч
Решето Ератосфена O(n log log n) О (п) Мільйони цінностей

Перегляньте нашу програму, щоб дізнатися прості числа з будь-якого вхідного числа коли потрібно перевірити одне значення, а не діапазон. Для подальших вправ на основі циклу перегляньте Ряд Фібоначчі в Java, Java програма-паліндром, А Bubble Алгоритм сортування в JavaБулевий масив, який використовується решетом, пояснюється далі в Java масиви.

Поширені запитання

Їх рівно 25. Послідовність починається з 2 і закінчується на 97, а щільність неухильно зменшується зі збільшенням значень.

Умова внутрішнього циклу стає 2 <= 1, що одразу стає хибним, тому ділення не виконується, і метод повертає значення true. Цей єдиний випадок вартий перевірки в кожній реалізації.

Змініть змінну maxCheck на 500. Щоб почати з значення вище 1, натомість змініть початкове значення лічильника зовнішнього циклу та залиште метод перевірки недоторканим.

Кожне менше кратне p вже містить менший простий дільник і було позначено під час попереднього проходу. Початок з p у квадраті дозволяє уникнути повторення цієї роботи.

Зазвичай вони повертають пробне ділення, якщо в запиті не згадується великий діапазон або продуктивність. Вказівка ​​верхньої межі в запиті зазвичай повертає решето.

Прості числа вибираються як розміри хеш-таблиці та корзини ознак, оскільки вони рівномірно розподіляють ключі та зменшують колізії. Вони також є початковими значеннями хеш-функцій, що використовуються у векторизації ознак.

Підсумуйте цей пост за допомогою: