Простое число или нет? - VB

Узнай цену своей работы

Формулировка задачи:

Это программа определяет является ли число простым. Дана форма. На ней текстовое поле, в которое можно ввести число (максимум 16 цифр). Если число простое, то оно становится красным, а нет - оно черное. Время вычисления самого большого простого числа где-то полсекунды. (Смотрите скрин)
Листинг программы
  1. Option Explicit
  2. Dim T As String
  3. Dim P As Long, d As Long, dm As Long
  4. Dim p1 As Long, p2 As Long
  5. Dim bul As Boolean
  6. Dim Q As Double
  7. Const p8 = 100000000
  8. Private Sub txtT_Change()
  9. T = txtT.Text
  10. If Len(T) > 8 Then
  11. p1 = Val(Left(T, Len(T) - 8))
  12. p2 = Val(Right(T, 8))
  13. If p2 Mod 2 = 0 Then bul = False: GoTo 555
  14. Q = p1 * CDbl(p8) + p2
  15. dm = Sqr(Q) + 1
  16. For d = 3 To dm Step 2
  17. P = p8 Mod d
  18. Do While p1 > 0
  19. P = ((p1 Mod 10) * P) Mod d
  20. p1 = p1 \ 10
  21. Loop
  22. P = (P + p2) Mod d
  23. If P = 0 Then bul = False: GoTo 555
  24. Next d
  25. bul = True: GoTo 555
  26. Else
  27. P = Val(T)
  28. If P = 1 Then bul = False: GoTo 555
  29. If P = 2 Or P = 3 Then bul = True: GoTo 555
  30. If P Mod 2 = 0 Then bul = False: GoTo 555
  31. dm = Sqr(P) + 1
  32. For d = 3 To dm Step 2
  33. If P Mod d = 0 Then bul = False: GoTo 555
  34. Next d
  35. bul = True: GoTo 555
  36. End If
  37. 555
  38. If bul Then txtT.ForeColor = vbRed Else txtT.ForeColor = vbBlack
  39. End Sub

Решение задачи: «Простое число или нет?»

textual
Листинг программы
  1. Function PrimeFact$(s$) 'число передается в виде текстовой строки, т.к. тип Double не может содкржать более 15 значащих цифр
  2.    Dim i&, txt$, n
  3.     n = CDec(s)
  4.     i = 2
  5.     While CDec(i) * i <= n
  6.         If Fix(n / i) <> n / i Then
  7.             If i = 2 Then i = i + 1 Else i = i + 2
  8.         Else
  9.             n = Fix(n / i)
  10.             txt = txt & "*" & i
  11.         End If
  12.     Wend
  13.     If txt = "" Then PrimeFact = "Prime" Else PrimeFact = Mid$(txt, 2) & "*" & n
  14. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы