Вывод делителей натурального числа - VBA
Формулировка задачи:
Что нужно дописать чтобы выводило эти делители?!
Решение задачи: «Вывод делителей натурального числа»
textual
Листинг программы
Option Explicit 'необходимость объявить все переменные Private Declare Function timeGetTime Lib "winmm.dll" () As Long 'Windows-таймер, 48 сут. Sub AI() 'вывод всех делителей натурального числа длиной до 15 цифр Dim i, j, t, Count, Count2, answer Static A A = InputBox("Введите a", "Ввод натурального числа", IIf(A = Empty, Year(Now), A)) If IsNumeric(A) And A <= 0 Or A = Empty Then MsgBox ("Ошибка ввода: значение пусто либо не больше нуля.") Exit Sub End If If IsNumeric(A) Then ReDim arr(1 To Sqr(A)) Else Exit Sub t = timeGetTime For i = 1 To Sqr(A) ' If (a / i) = (a \ i) Then 'тоже работает, но на числах лишь до 2^31 If Fix(A / i) = A / i Then Count = Count + 1 arr(Count) = A / i End If Next i Count2 = Count 'далее счёт делителей числа a, меньших чем Sqr(a) For j = Count To 1 Step -1 Count2 = Count2 + 1 arr(Count2) = A / arr(j) Next j answer = _ "Время выполнения: " & Format$((timeGetTime - t) / 1000, "0.000") & " секунды." _ & vbCr & vbCr & "Количество натуральных делителей " & A & ": " & Count2 & vbCr & _ vbCr & "Делители: " & Mid(Join(arr, "\"), 1, InStr(Join(arr, "\"), "\\")) MsgBox answer Debug.Print Join(Split(answer, "\"), Chr(13)) 'в случае если ответ не влез в MsgBox End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д