Другие языки программирования и технологии

найти произведение всех четных чисел от 1 до 300. нужен код функции в vba

BA
Beka Abdynazarov
501
вот код:

Sub ppp()
Cells.ClearContents 'очистим ячейки
Cells(1, 1) = 1 ' начально значение произведения
kk = 1 ' число ячеек занятых под результат
For ii = 2 To 300 Step 2 ' цикл умножения на четные числа по 300
perenos = 0
For nn = kk To 1 Step -1
Cells(nn, 1) = Cells(nn, 1) * ii + perenos ' тут умножаем каждую клетку на очередной множитель и складвыаем с переносом из предудщей
perenos = (Cells(nn, 1) - (Cells(nn, 1) Mod 1000000)) / 1000000
Cells(nn, 1) = Cells(nn, 1) Mod 1000000
Next nn
If perenos > 0 Then ' если возник перенос в старшем разряде сдвигаем все ячейки вниз и вставляем ячейку со значением переноса
For nn = kk + 1 To 2 Step -1
Cells(nn, 1) = Cells(nn - 1, 1)
Next nn
Cells(1, 1) = perenos
kk = kk + 1
End If
Next ii
End Sub

вот полученный результат:
81
544140
693805
943455
614969
189432
362136
551223
844617
222210
901524
242971
226177
70576
442833
181201
189972
905880
547639
252042
151746
219057
746287
924346
744582
832817
638116
193704
261939
70049
82799
607483
43802
605563
1224
773509
533899
818381
358134
309684
912674
310209
954493
291264
242855
444480
0
0
0
0
0
0
Нули в нижних ячейках нужно интерпретировать как 6 нулей
если просуммировать в excel десятичные логарифмы от 2 до 300 с шагом 2 и 10 то получим:
307,9113928
т. е. примерно 308 цифр должно быть в нашем произведении
что согласуется с ответом)))
Kuanysh Aldabergenov
Kuanysh Aldabergenov
59 950
Лучший ответ
Не сможете! По крайней мере, с текущим уровнем знаний ;-)
Это вот такое число:
3238703832 9782077887 3407895552 6652162842 2095679743 5978218811 3664121444 7955208134 1233349514 7327805008 9940650570 2329869173 4013374685 2804566584 8511034822 1953014192 8621897383 2756194717 4732442076 7426122143 4883975559 2664430955 1780094842 7830016089 4988876512 0519550681 8507540143 9716677045 2541933420 3637713702 7726229403 9721513831 9887494120 2645041910 0335074098 1710582206 5360280098 8371664130 6592300599 2944535275 2049751340 7189596667 0410075529 6815903611 2600166301 4077061216 2746310749 2217180140 9068110923 1051513148 6342957964 8895323409 8710305543 2678113280 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 00

Похожие вопросы