Форум программистов, компьютерный форум CyberForum.ru

Вычислить с помощью класса совершенные числа - C++

Восстановить пароль Регистрация
 
justboy
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 29
03.04.2014, 13:38     Вычислить с помощью класса совершенные числа #1
здравствуйте помогите пожалуйста вычислить с помощью класса совершенные числа заранее спасибо(6=1+2+3)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2014, 13:38     Вычислить с помощью класса совершенные числа
Посмотрите здесь:

C++ Совершенные числа
C++ совершенные числа С++
C++ Совершенные числа.
C++ Совершенные числа.
Совершенные числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dima_142577
 Аватар для Dima_142577
2 / 2 / 1
Регистрация: 29.11.2013
Сообщений: 19
03.04.2014, 14:25     Вычислить с помощью класса совершенные числа #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<iostream>
#include<conio.h>
 
using namespace std;
class number
{
private:
    int star,lim;
    int sum,k;
public:
    void func();
        
};
 
void number :: func()
{
     cout << " Enter the lower limit of the interval  : ";  
     cin >> star; 
     cout <<" Enter the upper limit of the interval  : ";  
     cin >> lim;
      if (lim<=0) cout << "0" << endl;
      else 
      {
            while(star<=lim) 
           {
               for(k=1,sum=0;k<star;++k)
               {
                   if(star%k==0)  sum+=k;  
               }
               if(sum==star)
                   cout <<"real number in a given interval : " << sum << endl; 
               ++star;
           }   
      } 
         
}
 
int main()
{
    number a;
    a.func();
 
 
    getch();   
    return 0;   
}
volvo
Супер-модератор
 Аватар для volvo
21811 / 14174 / 3947
Регистрация: 22.10.2011
Сообщений: 25,042
Записей в блоге: 2
03.04.2014, 15:07     Вычислить с помощью класса совершенные числа #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Для бОльших интервалов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <string>
#include <cmath>
#include <boost/dynamic_bitset.hpp>
 
class Perfect
{
    long from, to;
public:
    Perfect(long _from, long _to):from(_from), to(_to)
    {
    }
    void print();
};
 
void Perfect::print()
{
    for(int bin = 1; bin < 15; bin++)
    {
        std::string s = "";
        for(int i = 0; i < bin; i++) s = "1" + s + "0";
        s = "1" + s;
 
        boost::dynamic_bitset<>  x(s);
        long check = x.to_ulong();
        if(check < from) continue;
        if(check > to) break;
 
        long sum = 1;
        for(int div = 2; div <= (long)sqrt(check); div++)
            if(!(check % div)) sum += div + (check / div);
        if(check == sum) std::cout << sum << std::endl;
    }
 
}
 
int main()
{
    int start = 1, finish = 50000000;
    /*
    std::cout << "Lower limit";
    std::cin >> start;
    std::cout << "Upper limit";
    std::cin >> finish;
    */
 
    Perfect p(start, finish);
    p.print();
 
    return 0;
}
на интервале 1 .. 50 миллионов этот код работает доли секунды. Dima_142577, попробуй запустить свой код на этом же интервале.
Dima_142577
 Аватар для Dima_142577
2 / 2 / 1
Регистрация: 29.11.2013
Сообщений: 19
03.04.2014, 15:47     Вычислить с помощью класса совершенные числа #4
попробуй запустить свой код на этом же интервале.
То что он работать на таких интервалах не будет , даже проверять не буду , и так это понятно.
Уточнения об интервалах не было,поэтому и не учёл.
Yandex
Объявления
03.04.2014, 15:47     Вычислить с помощью класса совершенные числа
Ответ Создать тему
Опции темы

Текущее время: 20:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru