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

Дано натуральное число P. Определить все совершенные числа, не превосходящие P - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ вопрос по System http://www.cyberforum.ru/cpp-beginners/thread247254.html
Здравствуйте господа програмисты!вопрос такой-если мы знаем название папки,а про файл знаем только расширение можно написать вот так-System("c:\qwer\*.txt").а как написать тоже самое про папку если...
C++ Класс стека нужна помаш в написание одной программы(задачи) вот сама задача: Задание: Реализовать и протестировать контейнерный класс динамической структуры данных, содержащей строки. Класс должен иметь... http://www.cyberforum.ru/cpp-beginners/thread247252.html
C++ Считать с клавиатуры строку символов и записать ее в файл
плизз киньте код
C++ размер окна или на весь экран
Здравствуйте господа програмисты!я пишу в dev c++ for dos не мог ли бы вы подсказать как сделать определённый размер окна и если надо можно ли сделать на весь экран без кнопок закрыть свернуть и тд....
C++ элементарная графика в dev c++ http://www.cyberforum.ru/cpp-beginners/thread247200.html
Здравствуйте господа програмисты.не могли бы вы подсказать как в dev c++ for dos нарисовать- 1)линию,сделать её определённым цветом? 2)нарисоваить круг слелать его определённым цветом в нутри и...
C++ Вычислить 1+2+4+8+...+2 в степени 10 Вычислить. 1+2+4+8+...+2 в степени 10 подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
23.02.2011, 13:14
Абсолютно тупой и примитивный способ (при р=100000 считал минуты три), но за то проще некуда:
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
#include <stdio.h>
 
int perfect(int num){
    int i = num / 2, sum = 0;
    while ( i ){
        if ( ! ( num % i ) )
            sum += i;
        --i;
    }
    return sum == num;
}
 
int main(void){
    int p;
    
    printf("P = ");
    scanf("%d", &p);
    
    while ( p ){
        if ( perfect(p) )
            printf("%d\n", p);
        --p;
    }
    
    return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от DexterUa Посмотреть сообщение
for(int i=1;i<t;i++)
Так ещё дольше. К тому же, учитывая, что между n и n/2 чисел, на которые n делится нацело, в принципе нет - пустая трата времени.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru