|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.12.2010, 17:41 | #1 |
Регистрация: 10.12.2010
Сообщений: 7
|
нахождение чисел Армстронга
Задача: Натуральное число из N цифр является числом Армстронга, если сумма его цифр, взведенных в N-ю степень, равна самому числу (как, например, 153 = 1^3 + 5^3 + 3^3). Получить все числа Армстронга, состоящие из двух, трех и четырех цифр.
Преподавателю нужно чтоб в задаче присутствовала работа только с числами, то есть, чтобы она работала без таких функций как Len, Left, Right и т.д. Только совершенно не зню как это число армстронга правильно сформулировать в коде. Есть вот такой вариант, но он не работает Private Sub CommandButton1_Click() Dim q, L, S, N, k, a As Integer q = 0 k = 0 While N > 0 N = N \ 10 k = k + 1 Wend While N > 0 a = N Mod 10 S = S + a ^ k N = N \ 10 Wend If N = S Then Cells(q, 1) = S q = q + 1 End If End Sub Исправьте пожалуйста что не так, или предложите более правильный вариант кода, пожалуйста |
28.12.2010, 18:48 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Код:
Цитата:
|
|
28.12.2010, 19:55 | #3 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
или так, кода чуть побольше, но алгоритм намного быстрее
Код:
не оптимизированный алгоритм, предложенный Игорем, выдал тот же результат за 14.95 секунд.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
29.12.2010, 01:26 | #4 | |
Форумчанин
Регистрация: 21.11.2010
Сообщений: 326
|
По моему число Армстронга считается несколько по другому:
"...число Армстронга — натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр." - Википедия и соответственно достаточно быстрый код: Код:
Цитата:
|
|
29.12.2010, 02:06 | #5 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
кстати, да. степень должна соответствовать количеству цифр в числе.
153 3 370 3 371 3 407 3 1634 4 4150 5 4151 5 8208 4 9474 4 54748 5 92727 5 93084 5 красные не числа Армстронга. не то мы с Игорем считали... я еще степени показывал в результатах... очередная штанга. когда в школе проходили числа Армстронга, я, видимо, прогулял урок.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
29.12.2010, 14:45 | #6 |
Форумчанин
Регистрация: 21.11.2010
Сообщений: 326
|
А можно и формулками порешать, тоже достаточно быстро считает от 10 до 99999 (правда только в 2007/2010):
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нахождение натуральных чисел | neomax38 | Помощь студентам | 1 | 28.10.2010 09:33 |
Нахождение натуральных чисел:) | neomax38 | Помощь студентам | 0 | 15.10.2010 14:46 |
Нахождение простых чисел. | Lunex.08 | Общие вопросы C/C++ | 7 | 10.04.2009 17:01 |
Нахождение чисел в матрице | bpystep | Помощь студентам | 12 | 23.03.2009 00:31 |
нахождение полных чисел | Juhn | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 09.12.2007 13:14 |