Найти ВСЕ числа из промежутка от А до В, у которых
больше всего делителей

2

Ответы и объяснения

2013-12-15T11:05:12+04:00
2013-12-15T11:37:58+04:00
Dim mas(,) As Integer
Dim u As Integer, u2 As Integer
Dim a As Integer
Dim b As Integer 

a = InputBox("Введите Начало промежутка (A)") 
b = InputBox("Введите Конец промежутка  (В)")
       
Dim Length As Integer 
Length = CInt(((b - a) ^ 2) ^ 0.5)   
ReDim mas(Length, 1)
       
Dim x As Integer, y As Integer, i As Integer       

For x = a To b
            mas(i, 0) = x
            i += 1
Next

For x = 0 To Length
            For i = 1 To mas(x, 0)
                If (mas(x, 0) Mod i) = 0 Then
                    mas(x, 1) += 1
                End If
            Next
Next

For i = Length To 0 Step -1
            For y = Length To 1 Step -1
                If mas(y, 1) > mas(y - 1, 1) Then
                    u = mas(y, 1)
                    u2 = mas(y, 0)
                    mas(y, 1) = mas(y - 1, 1)
                    mas(y, 0) = mas(y - 1, 0)

                    mas(y - 1, 1) = u
                    mas(y - 1, 0) = u2
                End If
            Next y
Next i

Например на промежутке 5 - 55 результат такой:
48 делителей 10
36 делителей 9
24 делителей 8
30 делителей 8
40 делителей 8
42 делителей 8
54 делителей 8
12 делителей 6
18 делителей 6
20 делителей 6
28 делителей 6
32 делителей 6
44 делителей 6
45 делителей 6
50 делителей 6
52 делителей 6
16 делителей 5
6 делителей 4
8 делителей 4
10 делителей 4
14 делителей 4
15 делителей 4
21 делителей 4
22 делителей 4
26 делителей 4
27 делителей 4
33 делителей 4
34 делителей 4
35 делителей 4
38 делителей 4
39 делителей 4
46 делителей 4
51 делителей 4
55 делителей 4
9 делителей 3
25 делителей 3
49 делителей 3
5 делителей 2
7 делителей 2
11 делителей 2
13 делителей 2
17 делителей 2
19 делителей 2
23 делителей 2
29 делителей 2
31 делителей 2
37 делителей 2
41 делителей 2
43 делителей 2
47 делителей 2
53 делителей 2