Наибольшие делители числа из файла
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
-
- Сообщения: 9
- Зарегистрирован: 18 фев 2010, 13:56
Задача передо мной поставлена такая:
Найти 4 наибольших делителей введенного из файла числа и их сумму. Операцию оформить в виде функции, которая a качестве параметра получает имя файла, а возвращает найденную сумму, пожалуйста, срочно надо...
Найти 4 наибольших делителей введенного из файла числа и их сумму. Операцию оформить в виде функции, которая a качестве параметра получает имя файла, а возвращает найденную сумму, пожалуйста, срочно надо...
что неполучается?
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Если будешь делать сам с нашей помощью, то говори что конкретно не получается.
Если хочешь, чтобы за тебя полностью сделали, то дай знать и я перенесу в "Решите мне задачку".
P.S. Я поправил название темы. В который раз напоминаю, что заголовок темы должен быть информативным. Темы, не удовлетворяющие этому условию, могут быть удалены без предупреждения на основании правил, которые пользователь подписывает во время регистрации.
Если хочешь, чтобы за тебя полностью сделали, то дай знать и я перенесу в "Решите мне задачку".
P.S. Я поправил название темы. В который раз напоминаю, что заголовок темы должен быть информативным. Темы, не удовлетворяющие этому условию, могут быть удалены без предупреждения на основании правил, которые пользователь подписывает во время регистрации.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
-
- Сообщения: 9
- Зарегистрирован: 18 фев 2010, 13:56
Не пойму одного, как найти 4 наибольших делителя числа, так все понятно...
-
- Сообщения: 9
- Зарегистрирован: 18 фев 2010, 13:56
И меня интересует не сам код, а алгоритм нахождения...
Код: Выделить всё
for(k=2,n=a,kol=0;k<=n&&kol<4;k++)
if(!(a%k)){
kol++;
n=a/k;
cout<<n<<" ";
}
в заголовке написали НОД - почему делители общие если число одно?
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Исправлено.rrrFer писал(а): в заголовке написали НОД - почему делители общие если число одно?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
По-моему, быстрее искать таким образом: делим исходное число на 2, затем на 3 и т. д., проверяя остаток от деления и пока не наберём 4 числа. Очевидно, что самым большим делителем будет само число, значит нужно искать всего 3 делителя.Nikitos))) писал(а):И меня интересует не сам код, а алгоритм нахождения...
PS rrrFer так и сделал, не обратил внимания сразу.

Код: Выделить всё
int main(){
int k,kol,a;
cin>>a;
for(k=1,kol=0;k<=a&&kol<3;k++)
if(!(a%k)){
kol++;
cout<<a/k<<" ";
}
return 0;
}
Приглашаю на свой блог о программировании: pro-prof.com