Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
aekuznecov
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
1

Программа подсчета числа составных делителей натурального числа M

15.12.2014, 10:59. Просмотров 795. Ответов 2
Метки нет (Все метки)

Дано натуральное число M. Нужно составить программу подсчета всех составных делителей. Пытался найти формулу или алгоритм - ничего не накопал. Подскажите кто что может. Спасибо

Добавлено через 4 часа 8 минут
Хотя бы формулу. Было бы кстати
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2014, 10:59
Ответы с готовыми решениями:

Найти сумму делителей натурального числа
Дано натуральное число n. Найти сумму его делителей.

Подсчитать общее количество делителей натурального числа
Дано натуральное число подсчитать общее количество его делителей. Нужна программа и блок-схема.

Найти количество нечетных делителей натурального числа
1. Найти количество нечетных делителей натурального числа, меньших K (К вводить с клавиатуры). 2....

Найти сумму нечётных делителей натурального числа.
Составить программу для вычисления суммы кубов чисел от 10 до 100. Найти сумму нечётных...

Нахождение количества делителей заданного натурального числа
дано натуральное число A (вводить с клавиатуры ) составить программу, позволяющую найти...

2
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5205 / 3080 / 2311
Регистрация: 22.11.2013
Сообщений: 8,621
15.12.2014, 11:12 2
Лучший ответ Сообщение было отмечено aekuznecov как решение

Решение

Можно пойти в лоб: перебрать все делители и посчитать составные:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function IsPrime(m: Longint): Boolean;
var i, n: Word;
begin
  if m<0 then m:=-m;
  IsPrime:=False;
  if m=2 then IsPrime:=True
  else if (m>2) and Odd(m) then begin
    i:=3; n:=Trunc(sqrt(m)); IsPrime:=True;
    while i<=n do begin
      if m mod i=0 then begin
        IsPrime:=False; Break;
      end;
      Inc(i,2);
    end;
  end;
end;
 
var
  m: Longint;
  i, n, p: Word;
begin
  Write('Введите число: '); ReadLn(m);
  p:=Trunc(sqrt(m)); {n:=0;}
  for i:=2 to p-1 do
    if m mod i=0 then begin
      Inc(n,Ord(not IsPrime(i)));
      Inc(n,Ord(not IsPrime(m div i)));
    end;
  if m mod p=0 then Inc(n,Ord(not IsPrime(p)));
  WriteLn('Составных делителей: ',n);
end.
Добавлено через 2 минуты
По поводу формулы: а попробуйте разложить число на простые множители, тогда для получения составного делителя достаточно взять два или больше множителя, число таких комбинаций даст искомый ответ.
1
aekuznecov
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
15.12.2014, 11:19  [ТС] 3
bormant, большое спасибо
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2014, 11:19

Нахождение для заданного натурального числа н всех делителей
Помогите, пожалуйста решить задачи. Знаю, что не сложные, но я в паскале полный тормоз, а решения...

Составить программу нахождения для заданного натурального числа всех делителей, кратных числу
1. Дан одномерный массив, состоящий из вещественных элементов. Найти сумму элементов массива,...

Программа подсчета числа неуспевающих и программа поиска владельца автомобиля...
Помогите пожалуйста решить 2 задачи: Составьте программу подсчета числа неуспевающих по...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.