Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 20

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

03.03.2017, 15:26. Показов 2251. Ответов 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
Ответ Создать тему
Новые блоги и статьи
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/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru