0 / 0 / 0
Регистрация: 02.10.2019
Сообщений: 2
1

Ввести с клавиатуры натуральное число N (N<1000). Вывести на экран наименьшее простое число, которое больше чем N

02.10.2019, 21:56. Показов 2978. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Буду очень благодарен если решите задачу. В задаче нельзя использовать массивы , другие классы. Можно использовать while , do while , switch , if else. Язык программирования Java. Входные данные : 8 Выходные данные : 11
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2019, 21:56
Ответы с готовыми решениями:

Вывести на экран наименьшее простое число, которое больше чем N
Ввести с клавиатуры натуральное число N (N&lt;1000). Вывести на экран наименьшее простое число,...

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

Вывести на экран наименьшее простое число из массива, которое больше X
1)Даны одномерный массив А неупорядоченных натуральных чисел и число X. Вывести на экран наименьшее...

Создать программу, которая найдет наименьшее число, который взаимное простое число с 60 и больше, чем введенное число
Создать программу, которая найдет наименьшее число, который взаимное простое число с 60 и больше,...

4
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 874
02.10.2019, 23:24 2
Mirrox,

Кликните здесь для просмотра всего текста
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
import java.util.Scanner;
 
public class ZZZ {
    public static void main(String[] args) {
        int userInput = scanIntFromInterval(0, 999);
        int i = 1;
        while (true) {
            if (isPrime(userInput + i)) {
                System.out.println("Cледующее за ним простое число: " + (userInput + i));
                break;
            }
            i++;
        }
    }
 
    private static boolean isPrime(int n) {
        if (n <= 3) return n > 1;
        else if (n % 2 == 0 || n % 3 == 0) return false;
        int i = 5;
        while (i * i <= n) {
            if (n % i == 0 || n % (i + 2) == 0) return false;
            i += 6;
        }
        return true;
    }
 
    public static int scanIntFromInterval(int a, int b) {
        Scanner in = new Scanner(System.in);
        int userInput;
        while (true) {
            System.out.print("Введите целое "
                    + "число в диапазоне [" + a + " .. " + b + "]: ");
            if (in.hasNextInt()) {
                userInput = in.nextInt();
                if (userInput >= a && userInput <= b) break;
                else
                    System.out.println("Не соответствует условиям ввода! ");
            } else {
                System.out.println("Не соответствует условиям ввода! ");
                in.nextLine();
            }
        }
        in.close();
        System.out.println("Введено число: " + userInput);
        return userInput;
    }
}
Код
Введите целое число в диапазоне [1 .. 999]: 8
Введено число: 8
Cледующее за ним простое число: 11
0
2449 / 1905 / 476
Регистрация: 17.02.2014
Сообщений: 9,161
03.10.2019, 10:18 3
Цитата Сообщение от alicesmagic Посмотреть сообщение
if (n <= 3) return n > 1;
т.к. 2 тоже оно.
задача простая но с подвохом, т.к. если будем искать число на самой верхней границе, в моем случае 120 и ищем большее, то мое решение требует брать список вплоть до 150((.
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
import java.util.HashSet;
import java.util.Set;
 
public class Helper {
 
    public static void main(String[] args) {
        Set<Integer> primeNums = getSetPrimNumLessThenHeightNum(150);
        System.out.println(getNearestSmallerOrLargerPrimeNum(primeNums, 120, true));
        System.out.println(getNearestSmallerOrLargerPrimeNum(primeNums, 120, false));
    }
 
    private static Set<Integer> getSetPrimNumLessThenHeightNum(int heightNam) {
        Set<Integer> integerSet = new HashSet<>();
        boolean contin;
        for (int i = 3; i < heightNam; i += 2) {
            contin = true;
            for (Integer prTmp : integerSet) {
                if (i % prTmp == 0) {
                    contin = false;
                    break;
                }
            }
            if (contin)
                integerSet.add(i);
        }
        integerSet.add(2);
        return integerSet;
    }
 
    static int getNearestSmallerOrLargerPrimeNum(Set<Integer> primeNums, int num, boolean isLarger) {
        int step = -1;
        if (isLarger)
            step *= -1;
        while (!primeNums.contains(num)) num += step;
        return num;
    }
}
0
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 874
03.10.2019, 17:15 4
Цитата Сообщение от Aviz__ Посмотреть сообщение
т.к. 2 тоже оно
Aviz__, ну правильно же. Если два то return n > 1; true.
Этот алгоритм четкий. Лучший из всех, что проверяет число на простоту

Добавлено через 56 минут
Цитата Сообщение от Aviz__ Посмотреть сообщение
мое решение требует брать список вплоть до 150
А зачем усложнять? Не проще ли проверять все числа после заданного, пока не встретится простое? Оно же и будет ответом.
0
2449 / 1905 / 476
Регистрация: 17.02.2014
Сообщений: 9,161
03.10.2019, 18:37 5
Цитата Сообщение от alicesmagic Посмотреть сообщение
ну правильно же
ога, правильно), скузема!
Да, в моем случае, множество нужно составлять до следующего за границей.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2019, 18:37
Помогаю со студенческими работами здесь

Найти и вывести на экран наименьшее натуральное число которое превращается в единицу за k ходов
Здравствуйте! Срочно надо программы написать! 2 За один ход с числом делается такая операция:...

Ввести с клавиатуры натуральное число A. Вывести на экран сумму всех чисел от 1 до A включительно
Ввести с клавиатуры натуральное число A. Вывести на экран сумму всех чисел от 1 до A включительно....

Дано натуральное число N. Вывести на экран: предшествующее по отношению к нему простое число
Дано натуральное число N. Вывести на экран: предшествующее по отношению к нему простое число

Ввести с клавиатуры натуральное число X (X<256). Вывести на экран двоичное представление этого числа (8 разрядов)
Ввести с клавиатуры натуральное число X (X&lt;256). Вывести на экран двоичное представление этого...

Найти натуральное число, которое во входе встречается нечетное число раз и вывести на экран
задача. на вход подается сначала кол-во эл-тов массива&lt;500 000, затем сами элементы, каждый из...

Дано натуральное число N. Найти наименьшее число М (N< M< 2N), которое делится на сумму цифр числа N (без оста
Дано натуральное число N. Найти наименьшее число М (N&lt; M&lt; 2N), которое делится на сумму цифр числа...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru