@dmitrii2004

Найдите сумму и количество делителей натурального числа?

Числовые функции
Количество всех натуральных делителей натурального числа n обозначается σ0(n). Сумма всех натуральных делителей числа n обозначается σ1(n).

Входные данные

Дано натуральное n≤109.

Выходные данные

Выведите σ0(n) и σ1(n).

Примечание

Данную задачу рекомендуется решать путём перебора всех делителей числа до n−−√.

Примеры
Ввод
6
Вывод
4 12
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
	int n,c=0,s=0;
	cin >> n;
	for (int i = 1; i <= sqrt(n) ; i++)
	{
		if (n % i == 0 and i != sqrt(n)) {
			c += 2;
	
			s += (i + n / i);
			
		}
		if (i == sqrt(n) and n % i == 0)
		{

			c += 1;
			s += i;
			
		}
	}
	cout << c << " " << s;
	
}
Помогите пожалуйста. Сайт пишет что программа выдаёт неверный ответ
  • Вопрос задан
  • 3709 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
В с++ разве есть оператор and? Попробуйте заменить sqrt на проверку i*i ==n. Видимо, проблемы с точностью. Плюс может быть переполнение. Сумма должна быть long long.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы