Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/40: Рейтинг темы: голосов - 40, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 09.05.2018
Сообщений: 26

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

03.03.2019, 22:17. Показов 8391. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Задание следующее:
Объявите одномерный целочисленный массив, в котором не более 100 элементов. Выполните генерацию массива первыми 100 простыми числами. Выведите массив на экран в строки по 10 элементов в каждой. Оформите генерацию и вывод массива с помощью функций.
Вот что у меня есть:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.ArrayList;
import java.util.List;
 
public class Func {
    private static List <Integer> lst = new ArrayList <Integer> (); //список простых чисел
    public static void main (String[] args) {
        generate();
        show();
    }
    
    public static void generate() { //генерация простых чисел
        for (int i = 2; i < 542; i++) {     //перебор элементов массива от 2 до 542 (тк сотое простое число = 541)
            for (int j = 2; j < i; j++) {   //перебор элементов от 2 до текущего
                if (i % j == 0)             //если есть делитель, то выбрасываем
                    break;
                else {
                    lst.add(i);             //если делителя нет, то записываем в список простых чисел
                }
            }
        }
    }
    
    public static void show() { //вывод простых чисел
        System.out.println("2");
        for (int i = 0; i < lst.size(); i++) {
            System.out.print(lst.get(i) + "\t");
        }
    }
}
Пока добился того, что числа генерируются, но выводятся они совсем не так: одно число может встречаться очень много раз. Что с этим делать и как добиться положительного результата? Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2019, 22:17
Ответы с готовыми решениями:

Генерация простых чисел
Ребят срочно нужно на Зачет,Помогите новичку. Составить программу-генератор простых чисел, в основу положить формулу 2х2 + 29 при 0 ≥...

Генерация простых чисел
Всем привет! Кто знает не сложные и быстрые алгоритмы генерации больших простых и псевопростых чисел, тест ферма что работает не...

Генерация простых чисел
Добрый день! Нужна генерация (псевдо) простых чисел длиной n бит. К сожалению, я её найти не смог. Самое лучшее что есть -...

6
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.03.2019, 22:45
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private static List<Integer> lst = new ArrayList<>(Arrays.asList(2, 3, 5, 7));
 
    public static void main(String[] args) {
        generate();
        show();
    }
 
    public static void generate() { 
        for (int i = 10; i <= 543; i++) {
            if (i % 2 != 0 && i % 3 != 0 && i % 5 != 0 && i % 7 != 0) {
                lst.add(i);
            }
        }
    }
 
    public static void show() { //вывод простых чисел
        for (int i = 0; i < lst.size(); i++) {
            if (i % 10 == 0) System.out.println();
            System.out.print(lst.get(i) + "\t");
        }
    }
1
1 / 1 / 0
Регистрация: 09.05.2018
Сообщений: 26
03.03.2019, 23:22  [ТС]
iSmokeJC, спасибо за ваш ответ! Вывод работает на ура, но с самой фильтрацией возникли проблемы: выводятся такие числа, как 121, 169, 289 и так далее, но они простыми уже не являются, так как некоторые из них явно составные. Скриншоты приложил - на первом то, что вывелось (красным подчеркнуты не простые числа), на втором таблица с простыми числами, где выделены первые 100
Миниатюры
Генерация и вывод простых чисел   Генерация и вывод простых чисел  
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.03.2019, 23:33
Лучший ответ Сообщение было отмечено Heckelberry как решение

Решение

Heckelberry, ёпрст, это ж стёб..
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public static void generate() {
        for (int i = 2; i < 543; i++) {
            boolean bool = true;
            int x = (int) Math.sqrt(i);
            for (int j = 2; j <= x; j++) {
                if ((i % j) == 0) {
                    bool = false;
                    break;
                }
            }
            if (bool) lst.add(i);
        }
    }
1
1 / 1 / 0
Регистрация: 09.05.2018
Сообщений: 26
03.03.2019, 23:41  [ТС]
iSmokeJC, голова моя садовая...)
0
 Аватар для Aviz__
2744 / 2053 / 507
Регистрация: 17.02.2014
Сообщений: 9,472
05.03.2019, 11:38
Цитата Сообщение от iSmokeJC Посмотреть сообщение
i < 543;
тонко!
Heckelberry, вот тебе решение из шкафа, где задаешь количество простых чисел
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static void main(String[] args) {
        int countPrimeNums = 110; // тут вывод не 100, а 110 простых чисел
        int[] primeNum = new int[countPrimeNums];
        int indexSecond = 2;
        primeNum[indexSecond] = 3;
        int corrInd = indexSecond;
        int corrNum = primeNum[corrInd] + 2;
        boolean isPrime;
        while (corrInd < primeNum.length - 1) {
            isPrime = true;
            for (int i = 2; i < corrInd; i++) {
                if (corrNum % primeNum[i] == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                corrInd++;
                primeNum[corrInd] = corrNum;
                corrNum = primeNum[corrInd] + 2;
            } else corrNum += 2;
        }
        corrInd = 0;
        primeNum[0] = 1;
        primeNum[1] = 2;
        while (corrInd < primeNum.length) {
            if ((corrInd + 1) % 10 == 0)
                System.out.printf("%4d%n",primeNum[corrInd++]);
            else System.out.printf("%4d,",primeNum[corrInd++]);
        }
    }
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
10.03.2019, 20:04
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import java.util.*;
import java.lang.*;
import java.io.*;
 
class GenPrimes
{
    private int number=2;
    public int next()
    {
        int r;
        if (number == 2) {
            number=3;
            return 2;
        }
        else
        {
            r=number;
            while(true)
            {
                number+=2;
                if (isPrime(number)) break;
            }
            return r;
        }
    }
    private boolean isPrime(int n)
    {
        int k;
        k=3;
        while (k< Math.sqrt(n)+1)
        {
            if (n%k==0) return false;
            k+=2;
        }
        return true;
    }
}
 
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int [] prArr = new int[100];
        GenPrimes gp = new GenPrimes();
        int i,j;
        for (i=0; i<100; i++) prArr[i]=gp.next();
        j=0;
        for (i=0; i<100; i++)
        {
            System.out.printf("%5d",prArr[i]);
            j++;
            if (j==10) 
            {
                System.out.println();
                j=0;
            }
        }
    }
}

https://ideone.com/ZhiAjD


Вывод:

Code
1
2
3
4
5
6
7
8
9
10
    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  101  103  107  109  113
  127  131  137  139  149  151  157  163  167  173
  179  181  191  193  197  199  211  223  227  229
  233  239  241  251  257  263  269  271  277  281
  283  293  307  311  313  317  331  337  347  349
  353  359  367  373  379  383  389  397  401  409
  419  421  431  433  439  443  449  457  461  463
  467  479  487  491  499  503  509  521  523  541
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2019, 20:04
Помогаю со студенческими работами здесь

Генерация простых чисел
добрый вечер. Начал заниматься генераторами простых чисел и увы моих знаний не достаточно для получения чисел по теореме: пусть...

Генерация простых чисел
Нашел сам алгоритм создания (а не вычисления перебором) очень больших простых чисел. Где можно найти список всех известных формул для...

Быстрая генерация простых чисел
Доброго времени суток, мне нужно реализовать генерацию простых случайных чисел. Я разделил задачу на две подзадачи. 1) Генерация...

Вывод простых чисел от m до n
Здравствуйте! Возникла проблемка с задачкой. Требуется вывести все простые числа от m до n, при условии, что 2&lt;=m&lt;=n&lt;=1000000....

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru