Java Программа для печати праймов Numbers с 1 по 100 год
⚡ Умное резюме
Программа для печати простых чисел от 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 Использование сита Эратостена
Когда необходимо получить каждое простое число в заданном диапазоне, пробное деление — неподходящий инструмент. Решето Эратосфена строит логический массив, помечает кратные каждого простого числа как составные и считывает все оставшиеся непомеченные значения.
Метод состоит из трех этапов:
- Создайте логический массив размером n+1 и предположите, что каждый индекс от 2 и выше является простым числом.
- Начиная с числа 2, отметьте каждое число, кратное текущему простому числу, как составное.
- Переходите к следующему неотмеченному индексу и повторяйте до тех пор, пока не будет пройдено значение, равное квадратному корню из 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 массивы.
