|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.01.2019, 15:52 | #1 |
Новичок
Джуниор
Регистрация: 23.01.2019
Сообщений: 6
|
Вывести совершенные числа. Помогите сократить время работы программы
#include <iostream>
using namespace std; int main() { int N,D,i,j,sum,m=0; cin » N; D=N; for (j=2;j<=D;j++) {sum=1; N=j; for (i=2; i<N/2;i++) if (N%i==0) {sum+=i; sum+=N/i;}; if (sum==N) {cout « N « " "; m++;}; }; if (m==0) cout « "0"; return 0; } |
23.01.2019, 16:07 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
внутренний цикл до корня квадратного из N
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
23.01.2019, 16:20 | #3 |
Новичок
Джуниор
Регистрация: 23.01.2019
Сообщений: 6
|
Работает быстрее, но все равно надо сократить..
#include <iostream> #include <cmath> using namespace std; int main() { int N,D,i,j,sum,m=0; cin»N; D=N; for (j=2;j<=D;j++) {sum=1; N=j; for (i=2; i<sqrt(N);i++) if (N%i==0) {sum+=i; sum+=N/i;}; if (sum==N) {cout« N« " "; m++;}; }; if (m==0) cout « "0"; return 0; } |
23.01.2019, 16:31 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Для какого N вас не устраивает скорость?
|
23.01.2019, 16:34 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
23.01.2019, 16:53 | #6 |
Новичок
Джуниор
Регистрация: 23.01.2019
Сообщений: 6
|
|
23.01.2019, 17:00 | #7 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Код:
программа — запись алгоритма на языке понятном транслятору
|
23.01.2019, 17:07 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Код:
|
23.01.2019, 17:08 | #9 |
Новичок
Джуниор
Регистрация: 23.01.2019
Сообщений: 6
|
N/i - так я считаю второй делитель.
Например число 64. I=2, тогда ещё один делитель 64/2=32 (Мне надо сумму всех делителей) |
23.01.2019, 17:18 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
их всего-то 5 для int: 6, 28, 496, 8128 и 33550336 . Забей в прогу и победишь по скорости ))
PS если делитель равен корню квадратному, то его дважды суммировать не надо
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 23.01.2019 в 17:21. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывести время в миллисекундах с начала работы программы по встроенной функции Milliseconds в PascalABC.NET | constant_bel | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 03.06.2016 08:43 |
Как сократить время работы программы | dimon_snake | Паскаль, Turbo Pascal, PascalABC.NET | 43 | 01.02.2016 23:59 |
Вывести время работы процедуры | celest | Помощь студентам | 1 | 09.04.2013 21:22 |
Вывести все совершенные числа в заданном интервале А — В | ксения777 | Помощь студентам | 5 | 31.10.2011 21:14 |
Как вывести время работы приложения | razzmatazz | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 23.03.2009 00:17 |