Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > Форум Форум программистов > Форум C++ > Форум С++ для начинающих
Восстановить пароль Регистрация

Ответ Создать новую тему
 
05.12.2012, 15:12   #1
dimoncheg
Форумчанин
Регистрация: 18.10.2012
Сообщений: 141
Репутация: 9 (9)
Лучшие ответы: 1
Найти все натуральные числа от промежутка от 0 до 200. Проверить задачу / С++ для начинающих

Найти все натуральные числа из промежутка от 1 до 200, у которых сумма делителей равна S (S вводить с клавиатуры).

Что-то попытался, но ответ пишет странный мягко говоря. Подскажите пожалуйста что-нибудь по этому поводу. Заранее спасибо.

Код 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 <stdio.h> 
#include <stdlib.h> 
 
main() 
{ 
       int S,x, n,i;
printf("\n Введите S: "); 
 scanf("%d", &S); 
 
 
for (n = 1; n <= 200; n++){
    x=0;
    for (i = 1;i <= n; i++){
     
        if (n % i == 0){    
              x=x+i;
             
        } 
        if(S==x){ printf("%d\n", x);}
            }
}
 
system("pause");
}
05.12.2012, 15:12
AdAgent
Объявления
05.12.2012, 15:41   #2
ps10n1ck
Форумчанин
Регистрация: 10.11.2010
Сообщений: 132
Репутация: 50 (44)
Лучшие ответы: 1
Найти все натуральные числа от промежутка от 0 до 200. Проверить задачу

Найти все натуральные числа из промежутка от 1 до 200, у которых сумма делителей равна S
если я правильно понял, то это выглядит так:
промежуток: (1, 2, 3, 4, 5 .... 200]
в данном варианте сумма делителей если я правильно понял - разложение числа из промежутка на простые числа и проверка суммы этих простых чисел на равенство S?
Другие темы раздела
Переставить столбцы массива C++
Доброго времени суток) очень прошу вас помочь с программой. Дан двумерный массив из трех строк и восемнадцати столбцов. Переставить столбцы так,чтобы они располагались следующим способом: первый, восемнадцатый, второй, семнадцатый, ... , восьмой, одинадцатый, девятый, десятый. Очень надеюсь...
Объекты класса. Наследование C++
Помогите написать программу которая подсчитывает объекты класса используя наследование.
05.12.2012, 15:52  [ТС]   #3
dimoncheg
Форумчанин
Регистрация: 18.10.2012
Сообщений: 141
Репутация: 9 (9)
Лучшие ответы: 1
Найти все натуральные числа от промежутка от 0 до 200. Проверить задачу

Цитата Сообщение от ps10n1ck Посмотреть сообщение
если я правильно понял, то это выглядит так:
промежуток: (1, 2, 3, 4, 5 .... 200]
в данном варианте сумма делителей если я правильно понял - разложение числа из промежутка на простые числа и проверка суммы этих простых чисел на равенство S?
Кажется да.. Я просто мягко говоря не очень силен в С++, мне тут один человечек помог и убежал, а я вот сижу и разбираюсь, и на ответ выводит всякую бяку. Целый час сижу и пытаюсь в суть проблемы вникнуть. Может можно по-другому реализовать?
05.12.2012, 15:56   #4
ps10n1ck
Форумчанин
Регистрация: 10.11.2010
Сообщений: 132
Репутация: 50 (44)
Лучшие ответы: 1
Найти все натуральные числа от промежутка от 0 до 200. Проверить задачу

постараюсь что-то придумать, пока алгоритма нормального не придумал, все что в голову приходит, это просто методом перебора, но это тупо =). В течении дня, появится свободное время - попробую реализовать что-то путное.
05.12.2012, 15:56
AdAgent
Объявления
05.12.2012, 16:16  [ТС]   #5
dimoncheg
Форумчанин
Регистрация: 18.10.2012
Сообщений: 141
Репутация: 9 (9)
Лучшие ответы: 1
Найти все натуральные числа от промежутка от 0 до 200. Проверить задачу

Цитата Сообщение от ps10n1ck Посмотреть сообщение
постараюсь что-то придумать, пока алгоритма нормального не придумал, все что в голову приходит, это просто методом перебора, но это тупо =). В течении дня, появится свободное время - попробую реализовать что-то путное.
ваш ответ в теме уже что-то для меня значит, уже большое спасибо) теперь буду молиться чтобы мне или вам пришло в голову "что-то путное".
08.12.2012, 15:20   #6
ps10n1ck
Форумчанин
Регистрация: 10.11.2010
Сообщений: 132
Репутация: 50 (44)
Лучшие ответы: 1
Найти все натуральные числа от промежутка от 0 до 200. Проверить задачу / С++ для начинающих

Код 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 <vector>
#include <numeric>
 
using std::cout;
using std::cin;
using std::endl;
 
typedef unsigned int uint;
 
int main(){
  setlocale(LC_ALL, "Rus");
  uint S = 0;
  uint sum = 0;
 
  cout << "Введите сумму делителей: ";
  cin >> S;
 
  std::vector<int> v;
  std::vector<int> vsum;
  std::vector<int>::iterator i;
 
  for(uint i = 1; i <= S; ++i){
    for(uint j = 1; j <= i; ++j) {
      if(i%j == 0)
        v.push_back(j);
    }
  sum = std::accumulate(v.begin(), v.end(), 0);
  if(sum == S)
    vsum.push_back(i);
  v.erase(v.begin(), v.end());
  }
  
  if(vsum.size() > 0){
    cout << "Натуральные числа из промежутка у которых сумма делителей = " << S << endl;
    for(i = vsum.begin(); i != vsum.end(); ++i)
      cout << *i << " ";
    cout << endl;
  }
  else
    cout << "Промежуток не содержит натуральных чисел у которых сумма делителей = " << S << endl;
 
   
   system("pause");
return 0;
}
08.12.2012, 15:20
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
C++: Найти все натуральные числа из промежутка от 1 до 200, у которых количество делителей равно N
Найти все натуральные числа из промежутка от 1 до 200, у которых количество делителей равно N (N вводить с клавиатуры).
С++ для начинающих kissik 14.05.2014 18:48
C++: Найти все натуральные числа из промежутка от 1 до 200, у которых сумма делителей равна S
Найти все натуральные числа из промежутка от 1 до 200, у которых сумма делителей равна S. (S вводить с клавиатуры) #include <stdio.h> #include <conio.h> #include <locale.h> #include <windows.h> void main() { setlocale(LC_CTYPE, "Russian_Russia.1251");
С++ для начинающих Любовь1993 16.04.2014 03:32
C++: Найти все натуральные числа из промежутка от 1 до 200
Помогите решить контрольную задачу, с объяснениями! Пожалуйста!!! Найти все натуральные числа из промежутка от 1 до 200,у которых сумма чётных делителей равна N.
С++ для начинающих dimbasic 23.12.2012 15:48
C++: Найти все натуральные числа из промежутка от 1 до 200, у которых сумма четных делителей равна N (проверить)
Найти все натуральные числа из промежутка от 1 до 200, у которых сумма четных делителей равна N #include "stdafx.h" #include <iostream> #include <locale> using namespace std; void _tmain() {
С++ для начинающих Shnichel 16.12.2012 00:41
C++: Найти все натуральные числа из промежутка от 1 до 200. Проверить программу
Здравствуйте. Пожалуйста подскажите в чем тут ошибка? Выдаёт неккоректный ответ. Найти все натуральные числа из промежутка от 1 до 200, у которых сумма делителей равна S (S вводить с клавиатуры). #include <stdio.h> #include <stdlib.h> main() { int S=0, n,i; printf("\n...
С++ для начинающих dimoncheg 06.12.2012 17:27
Опции темы

Текущее время: 18:22. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.