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

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

Войти
Регистрация
Восстановить пароль
 
Джон
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 40
#1

По заданному числу определить наименьшую сумму его делителей - C++

06.03.2012, 21:45. Просмотров 659. Ответов 4
Метки нет (Все метки)

Есть у нас число. Допустим 12. Оно является НОК чисел 6 и 4, а также 6 4 1, 6 4 1 3 и т.д. Задача состоит в том, что нужно вывести НАИМЕНЬШУЮ сумму делителей этого числа, для которых оно кратное. Такими для 12 есть пара чисел 3 и 4. В сумме дают 7. Разумеется, чем меньше делителей кратного числа будет, тем меньше сумма. Так что скорее всего это должна быть сумма двух чисел. Нужно реализовать это на С++. Есть идеи? У меня 0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2012, 21:45     По заданному числу определить наименьшую сумму его делителей
Посмотрите здесь:

C++ Найти элемент массива, равный заданному числу Х или сообщить о его отсутствии
Найти элемент массива, равный заданному числу Х и отпечатать его индексы (I,J) C++
По заданному натуральному числу определить количество цифр в нём и их сумму C++
C++ По заданному числу n вычислить минимальную сумму чисел
Найти сумму всех элементов, кратных заданному числу C++
C++ Найти элемент массива, равный заданному числу Х и отпечатать его индекс
C++ Вывести на экран только те целые числа отрезка [a, b], у которых сумма делителей равна заданному числу
Найти сумму натуральных чисел, предшествующих заданному числу a C++
C++ По заданному числу N определить, является ли оно целым
C++ Найти сумму элементов, кратных удвоенному заданному числу
C++ Посчитать сумму всех элементов, кратных заданному числу
C++ По заданному натуральному числу найти его корень, печатая все промежуточные результаты

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.03.2012, 04:05     По заданному числу определить наименьшую сумму его делителей #2
Цитата Сообщение от Джон Посмотреть сообщение
Задача состоит в том, что нужно вывести НАИМЕНЬШУЮ сумму делителей этого числа, для которых оно кратное. Такими для 12 есть пара чисел 3 и 4. В сумме дают 7.
Если задача именно в этом, то это неправильно:
Цитата Сообщение от Джон Посмотреть сообщение
Разумеется, чем меньше делителей кратного числа будет, тем меньше сумма. Так что скорее всего это должна быть сумма двух чисел.
Разложим число на простые множители. Например у нас получилось такое разложение:
2*2*2*2*3*3*5
Если заменить 2*3 на 6, то сумма возрастет на 1. Если заменить 3*5 на 15, то сумма возрастет на 7.
Сумма останется прежней только в случае замены 2*2 на 4. Поэтому вывод:
Разложив число на простые множители, получим самую наименьшую сумму.
12=2*2*3 в сумме дают 7
Джон
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 40
07.03.2012, 13:14  [ТС]     По заданному числу определить наименьшую сумму его делителей #3
Вы не правы, поскольку числа 3 и 4 НЕЛЬЗЯ разложить, как 2,2,3, потому что тогда для этих чисел кратным уже будет не 12, а 6, что противоречит условию задачи. Кстати, вот и онаhttp://www.e-olimp.com.ua/problems/1246
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.03.2012, 13:32     По заданному числу определить наименьшую сумму его делителей #4
Цитата Сообщение от Джон Посмотреть сообщение
Вы не правы
да я всегда не прав.

Цитата Сообщение от Джон Посмотреть сообщение
Задача состоит в том, что нужно вывести НАИМЕНЬШУЮ сумму делителей этого числа, для которых оно кратное.
было бы понятнее (и правильнее) так:
Задача состоит в том, что нужно вывести НАИМЕНЬШУЮ сумму чисел, для которых оно является наименьшим общим кратным.
Джон
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 40
07.03.2012, 13:53  [ТС]     По заданному числу определить наименьшую сумму его делителей #5
Ну я написал функцию, она выводит последовательно делители числа. Допустим 12 - выводит 2 2 3. 30 - выводит 2 3 5. То есть их сумма - это и есть то что мне надо. Можете только помочь исправить мне код, что бы выводило сумму. И еще если я задаю 5 или 3, то что бы выводило не просто 5 или 3, а 6 и 4 соответственно. В общем чтобы для простых чисел выводил то же число +1.
Вот код. Вод эта задача (если я не ясно объяснил) http://www.e-olimp.com.ua/problems/1246
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
using namespace std;
void getdevidors(int n); 
int main(){
int a = 0; 
while(1) {
cin >> a; //Ввод
if (a==0) break; 
cout <<""; getdevidors(a); 
}
return 0;} 
    
void getdevidors(int n)
{ 
int i;  
double sqrt_of_n; 
sqrt_of_n=sqrt(double(n));   
for(i=2; i<=sqrt_of_n; i++) 
if (n%i==0){ cout << i<<", ";  
getdevidors(n/i);
return;}  cout << n<<endl;    
}
Yandex
Объявления
07.03.2012, 13:53     По заданному числу определить наименьшую сумму его делителей
Ответ Создать тему
Опции темы

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