List prime numbers java

Генерация простых чисел в Java

В этом уроке мы покажем различные способы генерации простых чисел с помощью Java.

Если вы хотите проверить, является ли число простым, вотa quick guide о том, как это сделать.

2. Простые числа

Начнем с основного определения. A prime number is a natural number greater than one that has no positive divisors other than one and itself.с

Например, 7 является простым, потому что 1 и 7 являются его единственными положительными целочисленными коэффициентами, тогда как 12 не потому, что имеет делители 3 и 2 в дополнение к 1, 4 и 6.

3. Генерация простых чисел

В этом разделе мы увидим, как эффективно генерировать простые числа, меньшие заданного значения.

3.1. Java 7 и ранее — грубая сила

public static List primeNumbersBruteForce(int n) < ListprimeNumbers = new LinkedList<>(); for (int i = 2; i > return primeNumbers; > public static boolean isPrimeBruteForce(int number) < for (int i = 2; i < number; i++) < if (number % i == 0) < return false; >> return true; >

Как видите,primeNumbersBruteForce перебирает числа от 2 доn и просто вызывает методisPrimeBruteForce(), чтобы проверить, является ли число простым или нет.

Метод проверяет делимость каждого числа на числа в диапазоне от 2 доnumber-1.

If at any point we encounter a number that is divisible, we return false. В конце, когда мы обнаруживаем, что это число не делится ни на одно из его предшествующих чисел, мы возвращаем истину, указывая, что это простое число.

Читайте также:  Inject javascript to page

3.2. Эффективность и оптимизация

Предыдущий алгоритм не является линейным и имеет временную сложность O (n ^ 2). Алгоритм также неэффективен, и очевидно, что его можно улучшить.

Давайте посмотрим на условие в методеisPrimeBruteForce().

Если число не является простым, это число можно разложить на два фактора, а именноa иb, т.е. number = а * Ь. If both a and b were greater than the square root of n, a*b would be greater than n.

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

Простые числа никогда не могут быть четными, поскольку четные числа делятся на 2.

Кроме того, простые числа никогда не могут быть четными, поскольку четные числа делятся на 2.

Имея в виду изложенные выше идеи, давайте усовершенствуем алгоритм:

public static List primeNumbersBruteForce(int n) < ListprimeNumbers = new LinkedList<>(); if (n >= 2) < primeNumbers.add(2); >for (int i = 3; i > return primeNumbers; > private static boolean isPrimeBruteForce(int number) < for (int i = 2; i*i < number; i++) < if (number % i == 0) < return false; >> return true; >

3.3. Использование Java 8

Давайте посмотрим, как мы можем переписать предыдущее решение, используя идиомы Java 8:

public static List primeNumbersTill(int n) < return IntStream.rangeClosed(2, n) .filter(x ->isPrime(x)).boxed() .collect(Collectors.toList()); > private static boolean isPrime(int number) < return IntStream.rangeClosed(2, (int) (Math.sqrt(number))) .filter(n ->(n & 0X1) != 0) .allMatch(n -> x % n != 0); >

3.4. Использование сита Эратосфена

Есть еще один эффективный метод, который может помочь нам эффективно генерировать простые числа, и он называется «Сито Эратосфена». Его эффективность по времени составляет O (n logn).

Давайте посмотрим на шаги этого алгоритма:

  1. Создайте список последовательных целых чисел от 2 доn: (2, 3, 4,…, n)
  2. Сначала пустьp равно 2, первому простому числу
  3. Начиная сp, отсчитывайте с шагомp и отметьте каждое из этих чисел больше, чемp в списке. Эти цифры будут 2p, 3p, 4p и т. Д .; обратите внимание, что некоторые из них, возможно, уже отмечены
  4. Найдите в незаметном списке первое число большеp. Если такого номера не было, остановитесь. В противном случае, пустьp теперь равно этому числу (которое является следующим простым числом), и повторите с шага 3

В конце, когда алгоритм завершает работу, все числа в списке, которые не отмечены, являются простыми числами.

public static List sieveOfEratosthenes(int n) < boolean prime[] = new boolean[n + 1]; Arrays.fill(prime, true); for (int p = 2; p * p > > List primeNumbers = new LinkedList<>(); for (int i = 2; i > return primeNumbers; >

3.5. Рабочий пример сита Эратосфена

Посмотрим, как это работает для n = 30.

image

Рассмотрите изображение выше, вот проходы, сделанные алгоритмом:

  1. Цикл начинается с 2, поэтому мы оставляем 2 без отметки и отмечаем все делители 2. Он отмечен на изображении красным цветом
  2. Цикл перемещается на 3, поэтому мы оставляем 3 без отметки и отмечаем все делители 3, которые еще не отмечены. Он отмечен на изображении зеленым цветом
  3. Цикл переходит на 4, он уже отмечен, поэтому продолжаем
  4. Цикл перемещается на 5, поэтому мы оставляем 5 без отметки и отмечаем все делители 5, которые еще не отмечены. Он отмечен на изображении фиолетовым цветом.
  5. Мы продолжаем вышеуказанные шаги, пока цикл не будет равен квадратному корню изn

4. Заключение

В этом быстром уроке мы проиллюстрировали способы, которыми мы можем генерировать простые числа до значения N.

Реализацию этих примеров можно найти вover on GitHub.

Источник

Prime Numbers From 1 To 100 in Java: Display 1 to 100 in Java

First of all, let’s get started with the prime number definition. A number is said to be a prime number if it is divisible by only 1 and itself. If we were asked to say prime numbers from 1 to 100 then it would be a tedious task to check each number on paper and say whether it is a prime number or not. Never mind we can write a code to do that and java makes things easy.

A Prime Number is a natural number greater than 1 and not a product of two smaller natural numbers. For example, 13 is only divisible by one or itself. The list of 1 to 100 prime numbers in Java is 2, 3, 5, 7, 11, 13, 17, and so on.

Note: 0 and 1 are not prime numbers; 2 is the only even prime number.

Java is a popular and one of the most used languages, and the reason for its sunny day spotlight is providing features like object-oriented programming, platform independency, predefined libraries, etc.

Ads of upGrad blog

Let’s build a code for printing prime numbers from 1 to 100 and walk through it. Let’s start!

Check out our free courses to get an edge over the competition.

Explore Our Software Development Free Courses

Java Program

Before jumping to the code, we’ll understand the algorithm to check if a number is a prime number or not. At first, we need to loop over all the numbers from 1 to N and maintain a count of numbers that properly divides the given number. If the count is 2 then we can conclude that the given number is a prime, else it is not a prime. Here’s the code to do that.

Check out upGrad’s Java Bootcamp

int n = 5 ;
int c = 0 ;
for ( int i= 1 ;i <=n;i++)
if (n%i== 0 )
c++;
if (c== 2 )
System.out.println(n+ ” is a prime number” );
else
System.out.println(n+ ” is not a prime number” );

In the above snippet n is the number which is to be checked if it is a prime number or not, c is a variable that stores the count of proper divisors. And we are looping over the range 1 to n and incrementing the count if we found a proper divisor.

And after coming out of the loop, we are checking if the count is 2 i.e.; there are only two proper divisors (1 and itself). If yes concluding it as a prime number, else a non-prime number. Talking about the time complexity of the above code it is a linear one, so it’s an O(n) complexity code.

Now that we were asked to print prime numbers from 1 to 100, we need to run this same algorithm for each number between 1 to 100 and store the prime number. And here’s the code to do that.

ArrayList a= new ArrayList<>();
for ( int n= 1 ; n int c = 0 ;
for ( int i = 1 ; i if (n % i == 0 )
c++;
if (c == 2 )
a.add(n);
else
continue ;
>
System.out.println(a);

In the above code, we’ve declared an ArrayList that stores all the prime numbers in the range of 1 to 100. Now we have two for loops first for loop is for looping over all the numbers between 1 to 100 and the second for loop is our previous prime number algorithm. After running the prime number algorithm for each number we are pushing it into ArrayList if it is a prime number.

In-Demand Software Development Skills

And after completing the loops we are printing our ArrayList which displays all the prime numbers between 1 to 100. Talking about the time complexity of the above code, we can see that there are two for loops. So it is an O(n ²) complexity code.

We have hardcoded the range in the above code, what if we want to print prime numbers in the range given by the user input?

upGrad’s Exclusive Software and Tech Webinar for you –

SAAS Business – What is So Different?

Prime Numbers in Given Input Range

The whole algorithm will be almost similar to the above code, the only difference we make is taking user input for the lower limit and upper limit of the range.

Scanner sc=new Scanner(System.in);
int lower=sc.nextInt();
int upper=sc.nextInt();
ArrayList a=new ArrayList<>();
for(int n=lower; n int c = 0;
for (int i = 1; i if (n % i == 0)
c++;
if (c == 2)
a.add(n);
else
continue;
>
System.out.println(a);

In the above code, we are initializing a scanner for reading user input. We’ve declared two variables lower and upper and assigning those variables with user input. What we have to do is print all the prime numbers between the range [lower, upper]. Our previous algorithm does this task and appends all the prime numbers to the ArrayList.

Learn Software Development Courses online from the World’s top Universities. Earn Executive PG Programs, Advanced Certificate Programs, or Masters Programs to fast-track your career.

The following section explains how to find prime number between 1 to 100 in Java.

The key method of the prime number program in Java includes a loop to check and find prime number between 1 to 100 in Java.

The main method calls the method “CheckPrime” to decide whether a number is prime or not in Java. For example, we have to divide an input number, say 15, from values 2 to 15 and check the remainder. But if the remainder is 0, the number is not prime.

Note that no number is divisible by more than half of itself. Hence, we must loop through just numToCheck/2. So, if the input is 15, its half is 7.5, and the loop will repeat through values 2 to 8.

If numToCheck is completely divisible by another number, the output is false, and the loop is broken.

But if numToCheck is prime, the output is true.

In the main method for how to find prime numbers from 1 to 100 in Java, check isPrime is TRUE and add it to primeNumFound String.

Here is the Java program to print prime numbers from 1 to 100.

public class primeNumFoundber

public static void main(String[] args)

int maxCheck = 100; // The limit to find prime numbers is up to 100

primeNumFound = primeNumFound + i + ” “;

System.out.println(“Prime numbers from 1 to ” + maxCheck + “:”);

// It prints prime numbers from 1 to maxCheck

public static boolean CheckPrime(int numToCheck)

//if remainder gives 0 than numToCheckber is not prime number and breaks loop, else it continues the loop

The output of this Java program to print prime numbers from 1 to 100 would be:

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

Find Prime Number using While Loop in Java

  1. In this program of calculating prime no between 1 to 100 in Java , the while loop is available in the constructor. If we instantiate the class, the constructor will be automatically executed.
  2. Read the “n” value through scanner class object sc.Int(). “FindoutPrime class” is introduced in the class Prime as a new FindPrime(n); the constructor of “FindoutPrime” will be performed.

Find Prime Number using While Loop in Java:

The program to find prime no between 1 to 100 in Java using “While Loop” is as below.

Источник

Оцените статью