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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
__Александр__
7 / 10 / 0
Регистрация: 17.09.2012
Сообщений: 188
Записей в блоге: 2
#1

Задача по нахождению идеальных чисел на заданном промежутке - C++

01.10.2012, 19:09. Просмотров 281. Ответов 1
Метки нет (Все метки)

почему в коде именно к/2 ???
(условие: задача по нахождению идеальных чисе в заданном промежутке; то есть сумма сомножителей чисоа должна быть равна самому числу например 6=1+2+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
#include <iostream> // заголовок ввода, вывода
#include <conio.h> // старый заголовочный файл из С 
using namespace std; // пространство имён std
void perf(int); // функция с аргументом типа int, не возвращающая значения
int total=0; // переменная целочисленного типа
void main() // главная функция, точка входа в программу
{
for(int k=4;k<=10000;k++) // цикл который будет идти до тех пор пока переменная k не равна 10000
{
perf(k); // вызов функции с аргументом k
if(total==k) // если total равно К 
cout<<"perfect"<<total<<" "<<k<<endl; // вывод сообщения
total=0; // тотал присваивается значение 0
}
}
void perf(int k) // функция
{
for(int i=1;i<=k/2;i++) // цикл идёт до тех пор пока i меньше равно k делённое на 2
{
if(k%i==0) // если к делится по модулю и равно 0 
{
total=total+i; // к значению total прибавляется i
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2012, 19:09     Задача по нахождению идеальных чисел на заданном промежутке
Посмотрите здесь:

Найти количество идеальных чисел в заданном диапазоне - C++
Находит количество идеальных чисел в заданном диапазоне. Идеальным называется число, равное сумме всех его делителей, не включая его...

Рассчитать значение функции в заданном промежутке с заданном шагом - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int n,k,s; float a,b,c,F; cout&lt;&lt;&quot;vvedite...

На промежутке неком промежутке, включая начало и конец, найти количество таких чисел, что a[i]>= a[i-1] - C++
Помогите с решением задачи. Условия задачи: на промежутке от 'StartNumber' до 'EndNumber', включая начало и конец, найти количество...

Отсортировать строки матрицы по сумме в них идеальных чисел - C++
Задача: Отсортировать строки матрицы (по-убыванию), по сумме в них идеальных чисел. Нужна ваша помощь, заранее спасибо.

Random в С++ в заданном промежутке - C++
Можете пожалуйста написать строчку присваивания переменной типа int рандомного значения числа скажем от 120 до 125?

Вычисление функции на заданном промежутке - C++
написать программу вычисления функции на заданном промежутке с шагом 0.2 и построить график этой функции

Протабулировать функцию на заданном промежутке - C++
Протабулировать функцию: Y=\begin{cases}sin(x)*lg(x) &amp; \text{ if } x \gt 3.5 \\ cos^2(x) &amp; \text{ if } x\leq 3.5 \end{cases} Х...

Случайные числа в заданном промежутке - C++
Как на чистом Си написать генератор случайных чисел в заданном промежутке? Т.е. чтобы числа генерировались от 0 до N, например. Помогите,...

Вычислить значение функции в заданном промежутке - C++
Мне нужно создать простенькую программу на нахождение значения функции f(x)=x3+sinx на отрезке с шагом 0,2 Если не сложно, подскажите...

Задача по нахождению ошибок в коде(язык с) - C++
Есть код: #include &lt;iostream&gt; using namespace std; int main() { int i; int n = 20;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.10.2012, 19:51     Задача по нахождению идеальных чисел на заданном промежутке #2
k/2 потому в данном цикле идёт перебор сомножителей, а для 1000 самый большой сомножитель будет 1000 делённая на 2

Добавлено через 16 минут
Написал то же самое но чуть понятней

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream> 
 
int main() 
{ 
    int total = 0; // сумма сомножителей
    
    for ( int k = 4; k <= 10000; k++)  // цикл чисел
    { 
        for ( int i = 1; i <= k/2; i++) // до 500 
        { 
            if( k % i == 0) // если к делить на i по модулю равно 0
            { 
                total += i; // сумма увеличивается на i
            } 
        } 
        if( total == k) // если total равно k
            std::cout << "Idealnoe chislo " << k << std::endl; 
        total = 0;
    } 
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru