Форум программистов, компьютерный форум, киберфорум
Наши страницы

Алгоритм проверки числа на "совершенность" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массивы и перестановка http://www.cyberforum.ru/cpp-beginners/thread920370.html
Помогите пожалуйста с задачей. Дано 2 массива, заполненных случайными числами, размером от 10-20 (рандом). Найти в первом массиве максимальное число и все числа, находящиеся до него записать в 3ий...
C++ Создайте класс на основе данной программы Создайте класс на основе данной программы #include <iostream> using namespace std; int main ( ) { const int n=10; int* ap; for(int j=0;j<n;j++) *(ap+j)=new int; http://www.cyberforum.ru/cpp-beginners/thread920338.html
Как определить в каком файле .lib реализована функция? C++
Есть один проект. В нем файл .h с прототипами функций и множество .lib-ов, с их реализациями. Я данные функции пытаюсь использовать в другом проекте, но при попытки построить проект VS2010 выдает...
Как получить int представление char (русские символ cp1251)? C++
Как получить int представление char (русские символ cp1251)?
C++ решении задачи (по Липпману) http://www.cyberforum.ru/cpp-beginners/thread920326.html
Занимаюсь по книги Стенли Липпмана "C++ Primer" (Язык программирования С++. Вводный курс). Возникла проблема с решением задачи.Текст - прочитайте некоторый текст, сохраняя каждое введенное слово как...
C++ Кошки Здравствуйте! Как в этом коде сделать так чтобы если кошке менее 2 лет, то цена кошки = 0$; Заранее спасибо!!! И еще как можно это часть кода: оптимизировать. Cat Mumu(140); ... подробнее

Показать сообщение отдельно
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
09.07.2013, 19:46
Thinker, это то понятно. Но тогда придется делать лишнюю операцию умножения, скорость если и будет чуть больше, но не намного. У меня с самого начала была идея что вроде такой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool isPerfect( unsigned int x ) {
   unsigned int sum = 1;
   unsigned int border = x / 2;
   unsigned int tmp;
   
   for ( unsigned int i = 2; i < border; i++ ) {
      tmp = x / i;
      
      if ( tmp * i == x ) {
         sum += i;
         sum += tmp;
         border = tmp;
      }
   }
   
   return sum == x;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.