0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 20

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число

03.03.2017, 15:26. Показов 2254. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.03.2017, 15:26
Ответы с готовыми решениями:

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.
6.2.2. Помогите, пожалуйста, решить задачи в С++ с помощью функций. Дано простое число. Составить функцию, которая будет находить...

7
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
03.03.2017, 19:07
Что вроде так

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FUNCTION NextP (p AS LONG) AS LONG
   IF p = 2 THEN NextP = 3
   IF p = 3 THEN NextP = 5
   IF p = 5 THEN NextP = 7
 
   IF p >= 7 THEN
      FOR i = p + 2 TO 2 * p STEP 2
         dm = SQR(p) + 1
         FOR d = 3 TO dm STEP 2
            IF i MOD d = 0 THEN GOTO 100
         NEXT d
         NextP = i
         EXIT FUNCTION
100
      NEXT i
   END IF
END FUNCTION
0
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
03.03.2017, 22:09
я конечно могу ошибаться, но м.б. в строке dm = SQR(p) 1 описка, вместо dm = SQR(i) 1
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
03.03.2017, 22:27
Лучший ответ Сообщение было отмечено ObLivion2346 как решение

Решение

Visual Basic
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
Option Explicit
 
Private Sub Form_Load()
    Dim d#, i&, ll&()
    ll = Primes(101)
    Do: d = 0
        While Not (d > 0 And d < 98): d = Val(InputBox("Введите простое число" & vbLf & "от 1 до 97", , 1)): Wend
        For i = 0 To UBound(ll)
            If d = ll(i) Then
                MsgBox "Простое число: " & d & vbLf & "Следущее: " & ll(i + 1)
                End
            End If
        Next
    Loop
    
End Sub
 
Function Primes(ByVal max&) As Long()
    Dim i&, ii&, n&
    If max > 1 Then
    ElseIf max = 1 Then
        ReDim ll&(0): ll(0) = 1: Primes = ll: Exit Function
    Else: Exit Function
    End If
 
    ReDim b(max) As Byte, ll&(Fix(max / Log(max) * 2))
    n = 1
    ll(0) = n: ll(n) = 2
    For i = 3 To Fix(Sqr(max)) Step 2
        If Not b(i) Then
            n = n + 1: ll(n) = i
            For ii = i * i To max Step i + i: b(ii) = True: Next
        End If
    Next i
    For i = i To max Step 2
        If Not b(i) Then n = n + 1: ll(n) = i
    Next i
    ReDim Preserve ll&(n): Primes = ll
End Function
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
04.03.2017, 09:22
Homarty
Спасибо! Вы правы - это опечатка.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
04.03.2017, 09:49
Задача с подвохом, дело в том чтобы выяснить что число простое
нужно перепроверить все числа которые меньше его, для этого уже нужен
алгоритм для нахождения простых чисел, естественно уже не составит труда найти его соседа по простоте
Сам алгоритм может быть любым. хоть с полной перепроверкой от 2 до 97, конечно же я использовал наиболее быстрый, известный и дополненный мною способ
0
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
04.03.2017, 20:16
fever brain признаюсь, что с первого раза "не въехал" в математику Вашего алгоритма, интересный, сейчас буду сравнивать по скорости с моей версией, вот она

Добавлено через 1 минуту
Visual Basic
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
60
61
62
63
64
65
66
67
68
69
70
71
Function NextP(ByVal p As Long) As Long
    On Error GoTo ToError
    Dim i As Long, j As Long
    Dim iAbs As Long, iLimit As Long
    Dim blnIsPrime As Boolean
    iAbs = Abs(p)
    If iAbs < 3 Then
        NextP = iAbs + 1
        Exit Function
    End If
    i = IIf(iAbs Mod 2, iAbs, iAbs + 1)
    Do Until blnIsPrime
        i = i + 2
        iLimit = CLng(Sqr(i)) + 1
        blnIsPrime = True
        For j = 3 To iLimit Step 2
            If (i Mod j) = 0 Then
                blnIsPrime = False
                Exit For
            End If
        Next j
    Loop
    NextP = i
    Exit Function
ToError:
    Select Case Err.Number
    Case 6
        MsgBox "Sorry, " & p & " is too large number"
    Case Else
        MsgBox "Sorry, an unforeseen error occured"
    End Select
End Function
 
 
Function NextP2(ByVal p As Double) As Double
    On Error GoTo ToError
    Dim d As Double, dd As Double
    Dim dAbs As Double, dLimit As Double
    Dim d1 As Double, d2 As Double
    Dim blnIsPrime As Boolean
    dAbs = Fix(Abs(p))
    If dAbs < 3 Then
        NextP2 = dAbs + 1
        Exit Function
    End If
    d1 = dAbs / 2
    d2 = Fix(d1)
    d = IIf(d1 > d2, dAbs, dAbs - 1)
    Do Until blnIsPrime
        d = d + 2
        dLimit = Fix(Sqr(d)) + 1
        blnIsPrime = True
        For dd = 3 To dLimit Step 2
            d1 = d / dd
            d2 = Fix(d1)
            If d1 = d2 Then
                blnIsPrime = False
                Exit For
            End If
        Next dd
    Loop
    NextP2 = d
    Exit Function
ToError:
    Select Case Err.Number
    Case 6
        MsgBox "Sorry, " & p & " is too large number"
    Case Else
        MsgBox "Sorry, an unforeseen error occured"
    End Select
End Function
Добавлено через 8 минут
Здесь две версии функции NextP и NextP2 первая, теоретически, чуть быстрее, но ограничена максимальным значением аргумента и возвращаемого значения типом long. Вторая работает с переменными double со всеми вытекающими последствиями.

Добавлено через 15 минут
За основу бралась функция предложенная echs, надеюсь он не будет против, я ему плюсую.

Добавлено через 11 минут
При значении аргумента 97 время работы функций много меньше секунды, разницу в скорости не обнаружил.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
04.03.2017, 20:38
простой вариант
Visual Basic
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
Function pr(n) As Boolean
Dim j
Dim f As Boolean
 
If n > 2 Then
  f = True
  j = 2
  Do While j ^ 2 <= n And f = True
    If n Mod j = 0 Then f = False Else j = j + 1
  Loop
End If
 
pr = f
End Function
 
Private Sub Command1_Click()
Dim n, i
 
Do
n = Val(InputBox("Введите простое число n="))
Loop Until pr(n) = True
 
i = n + 1
Do While pr(i) = False
i = i + 1
Loop
MsgBox "Следующее простое число=" & i
 
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2017, 20:38
Помогаю со студенческими работами здесь

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число Python 2.6. пожалуйста, ничего умного)...

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число

Дано простое число. Составить функцию,которая будет находить следующее за ним простое число.
дано простое число.составить функцию,которая будет находить следующее за ним простое число.

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

Составить функцию, которая будет находить следующее за ним простое число
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число. Написать коды этих задач и составить к ним...


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

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

Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru