Наибольшие делители числа из файла

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Nikitos)))
Сообщения: 9
Зарегистрирован: 18 фев 2010, 13:56

Задача передо мной поставлена такая:
Найти 4 наибольших делителей введенного из файла числа и их сумму. Операцию оформить в виде функции, которая a качестве параметра получает имя файла, а возвращает найденную сумму, пожалуйста, срочно надо...
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

что неполучается?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Если будешь делать сам с нашей помощью, то говори что конкретно не получается.
Если хочешь, чтобы за тебя полностью сделали, то дай знать и я перенесу в "Решите мне задачку".

P.S. Я поправил название темы. В который раз напоминаю, что заголовок темы должен быть информативным. Темы, не удовлетворяющие этому условию, могут быть удалены без предупреждения на основании правил, которые пользователь подписывает во время регистрации.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Nikitos)))
Сообщения: 9
Зарегистрирован: 18 фев 2010, 13:56

Не пойму одного, как найти 4 наибольших делителя числа, так все понятно...
Nikitos)))
Сообщения: 9
Зарегистрирован: 18 фев 2010, 13:56

И меня интересует не сам код, а алгоритм нахождения...
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

Код: Выделить всё

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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

Nikitos))) писал(а):И меня интересует не сам код, а алгоритм нахождения...
По-моему, быстрее искать таким образом: делим исходное число на 2, затем на 3 и т. д., проверяя остаток от деления и пока не наберём 4 числа. Очевидно, что самым большим делителем будет само число, значит нужно искать всего 3 делителя.
PS rrrFer так и сделал, не обратил внимания сразу. :)
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

Код: Выделить всё

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
Ответить