Java Программа для печати праймов Numbers с 1 по 100 год

⚡ Умное резюме

Программа для печати простых чисел от 1 до 100. Java Программа сканирует каждое значение в заданном диапазоне и сообщает о тех, у которых ровно два делителя. В этой статье объясняется определение, метод проверки, полная программа, решето Эратосфена и сравнение производительности с проверенными результатами.

  • 🔢 Правило определения: Простое число — это число, большее 1 и делящееся только на 1 и на себя, что полностью исключает 0 и 1.
  • 🔁 Сканирование диапазона: Внешний цикл проходит от 2 до верхнего предела и делегирует каждое значение многократно используемому методу проверки.
  • Логический метод: Функция CheckPrime возвращает false при обнаружении первого делителя и true, если цикл завершается без совпадения.
  • Ограничение делителя: Проверьте правильность значения, если оно равно половине, и остановитесь.ping Извлечение квадратного корня дает тот же ответ гораздо быстрее.
  • 🧮 Набор результатов: Между 1 и 100 существует ровно 25 простых чисел, оканчивающихся на 97.
  • Метод сита: Решето Эратосфена отмечает кратные значения в булевом массиве и работает за время O(n log log n).
  • 🧪 Практика проверки: Перед тем как доверять какой-либо реализации, убедитесь, что 2 включено, а 1 исключено.

Простое число Numbers С 1 по 100 в Java

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

A Простое число Простое число — это число, которое делится только на единицу или на себя. Это натуральное число больше единицы, которое не является произведением двух меньших натуральных чисел. Например, 11 делится только на единицу или на себя. Другие простые числа — это 2, 3, 5, 7, 11, 13, 17 и так далее.

Примечание: 0 и 1 не являются простыми числами. 2 — единственное четное простое число.

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

Диапазон Простое число 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

Как распечатать Прайм 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 заменяет повторяющуюся конкатенацию строк внутри цикла. Каждый += Функция `on` для строки создает новый объект, который становится измеримым, когда верхний предел достигает нескольких тысяч.

Печать 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 массивы.

Часто задаваемые вопросы (FAQ)

Их ровно 25. Последовательность начинается с 2 и заканчивается на 97, а плотность неуклонно уменьшается по мере увеличения значений.

Условие внутреннего цикла становится 2 <= 1, что сразу же ложно, поэтому деление не выполняется, и метод возвращает true. Этот единственный случай стоит проверить в каждой реализации.

Измените значение переменной maxCheck на 500. Чтобы значение изначально было больше 1, измените начальное значение счетчика внешнего цикла, а метод проверки оставьте без изменений.

Каждое меньшее кратное p уже содержит меньший простой множитель и было отмечено на предыдущем этапе. Начало работы с p в квадрате позволяет избежать повторения этой работы.

Обычно они возвращают пробное деление, если только в запросе не указан большой диапазон или значение производительности. Указание верхнего предела в запросе обычно приводит к использованию решета.

Простые числа выбираются в качестве размеров хеш-таблицы и сегментов признаков, поскольку они равномерно распределяют ключи и уменьшают количество коллизий. Они также служат инициализацией хеш-функций, используемых в векторизации признаков.

Подведем итог этой публикации следующим образом: