На ввод подается одно число. Найдите сумму всех его обычных делителей.Входные
На ввод подается одно число. Найдите сумму всех его обычных делителей.
Входные данные
Одно целое положительное число, не превышающее 10 в ступени 6 и большее, чем один.
Выходные данные
Выведите сумму обычных делителей этого числа.
Образцы
ВВОД
6
ВЫВОД
5
1 ответ
Нелли
Delphi / Pascal
function mySimpleDigit(a: integer):boolean;
var i: integer;
begin
for i:=sqrt(a) downto 1 do
if not (a mod i = 0) then mySimpleDigit:=false else mySimpleDigit:=true;
end;
var i,n,s: integer;
begin
write('Введите число: ');
readln(n);
if ((ngt;1) and (nlt;1000000)) then
begin
s:=0;
for i:=2 to n-1 do
if ((n mod i = 0) and (mySimpleDigit(i) = true)) then s:=s+i;
end;
writeln('Сумма всех обычных делителей: ', s);
readln;
end.
C++
include lt;cmathgt;
include lt;iostreamgt;
using namespace std;
bool mySimpleDigit(unsigned a)
for (unsigned i =sqrt(a); i gt; 1; i--)
if (!(a % i)) return false;
return true;
int main()
unsigned n,s;
cin gt;gt; n;
if ((ngt;1) amp;amp; (nlt;1000000))
s=0;
for (unsigned i=2; ilt;=n; i++)
if ((n%i==0) amp;amp; (mySimpleDigit(i)==true)) s+=i;
cout lt;lt; "Summa vsex prostix deliteley: " lt;lt; s;
else cout lt;lt; "Vvedite drugoe chislo";
return 0;
function mySimpleDigit(a: integer):boolean;
var i: integer;
begin
for i:=sqrt(a) downto 1 do
if not (a mod i = 0) then mySimpleDigit:=false else mySimpleDigit:=true;
end;
var i,n,s: integer;
begin
write('Введите число: ');
readln(n);
if ((ngt;1) and (nlt;1000000)) then
begin
s:=0;
for i:=2 to n-1 do
if ((n mod i = 0) and (mySimpleDigit(i) = true)) then s:=s+i;
end;
writeln('Сумма всех обычных делителей: ', s);
readln;
end.
C++
include lt;cmathgt;
include lt;iostreamgt;
using namespace std;
bool mySimpleDigit(unsigned a)
for (unsigned i =sqrt(a); i gt; 1; i--)
if (!(a % i)) return false;
return true;
int main()
unsigned n,s;
cin gt;gt; n;
if ((ngt;1) amp;amp; (nlt;1000000))
s=0;
for (unsigned i=2; ilt;=n; i++)
if ((n%i==0) amp;amp; (mySimpleDigit(i)==true)) s+=i;
cout lt;lt; "Summa vsex prostix deliteley: " lt;lt; s;
else cout lt;lt; "Vvedite drugoe chislo";
return 0;
Варвара
for (unsigned i=2; i
Валерия
Исправьте в коде
Игорян
В ответе исправил.
Тимур
При n=1 он также не посчитает, т.к. таких делителей не будет
Витя Уйменов
И если n=10^6, т.е. 1000000
Ilja Jezov
Всее работает:) Спасибо громадное за помощь.
Ева Марцавенко
Извините, что пришлось так повозиться. Спасибо Для вас за терпение
Карина Безскорсова
Все хорошо
Sofja Rodivilina
При вводе N = 69984, сумма простых делителей 136655,хотя, для этого числа всего 2 обычных делителя - 2 и 3 69984 = 2^5 * 3^9, все другие делители - составные числа.
Зафириади
Арсений
Склоняйтесь к варианту в C++, Delphi/Pascal - нерабочий и удалить уже не могу, т.к. помечено как ответ
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
Облако тегов