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

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

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

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

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

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

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

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

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

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

2
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4149 / 2743 / 2173
Регистрация: 22.11.2013
Сообщений: 7,666
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
MoreAnswers
Эксперт
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 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru