0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 10
1

Делители числа

22.03.2021, 12:03. Показов 3431. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Поступает последовательность целых положительных чисел, 0 — конец
последовательности. Определить, в каком из чисел больше всего делителей.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2021, 12:03
Ответы с готовыми решениями:

Зная простые делители числа и их количество, найти все делители числа
Добрый вечер. Есть задача: зная простые делители числа и их количество, найти все делители числа....

Даны натуральные числа p и q. Получить все делители числа q, взаимнопростые с p
как исправить, чтобы выводились только те делители, которые взаимнопросты с p? x=int(input('x='))...

Нетривиальные делители числа
Здравствуйте, вот условие задачи: Найдите числа, все нетривиальные делители которых образуют...

Все простые делители числа
Здравствуйте, написал код для нахождения всех простых делителей числа, но он долго работает (я...

Найти все делители натурального числа
# TASK # Найти все делители данного натурального числа N. N = int (input ('Введите число: '))...

8
710 / 349 / 120
Регистрация: 09.12.2020
Сообщений: 919
22.03.2021, 12:24 2
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def de(l):
    ct = 0
    l = int(l)
    for i in range(1, l):
        if l % i == 0:
            ct += 1
    return ct
 
 
k = []
while True:
    a = input()
    if not a:
        break
    k.append(a)
answlist = []
for char in k:
    answlist.append(de(char))
print(max(*answlist))
1
Эксперт Python
8199 / 4323 / 1833
Регистрация: 27.03.2020
Сообщений: 7,148
22.03.2021, 12:31 3
alilxxey,
Python
1
2
3
4
5
6
7
i = 1
while i*i <= l:
    if l % i == 0:
        ct += 1
        if i != l // i:
            ct += 1
    i += 1
За O(sqrt(n))
3
710 / 349 / 120
Регистрация: 09.12.2020
Сообщений: 919
22.03.2021, 12:37 4
Gdez, а в чем алгоритм заключается? не очень понял. Вы опять с математикой?)

Добавлено через 4 минуты
Gdez, еще, кстатти, если я не ошибаюсь, фор же быстрее while, если вы за временем гонитесь. Нет?
0
Эксперт Python
8199 / 4323 / 1833
Регистрация: 27.03.2020
Сообщений: 7,148
22.03.2021, 12:41 5
alilxxey, при делимости числа на делитель определяется сразу два делителя:
36 / 1 => 1, 36 (два делителя)
36 / 2 => 2, 18 (два делителя)
36 / 3 => 3, 12 (два делителя)
36 / 4 => 4, 9 (два делителя)
36 / 5 => с остатком, пропускаем
36 / 6 => 6, 6 => делители равны, значит считаем один делитель
Дальше считать смысла нет
36 / 7 и 36 / 8 => остаток
36 / 9 => 9, 4 - уже было

Добавлено через 2 минуты
еще, кстатти, если я не ошибаюсь, фор же быстрее while, если вы за временем гонитесь. Нет?
Без проблем - найди корень из исходного числа, добавь 1 и оформи через for
2
710 / 349 / 120
Регистрация: 09.12.2020
Сообщений: 919
22.03.2021, 13:19 6
Gdez, прикольно. спасибо!!
0
Status 418
Эксперт Python
4577 / 2344 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
22.03.2021, 13:38 7
зачем лишние действия в цикл?!
чуть чуть математики:
Python
1
2
3
4
5
6
7
8
9
n = int(input())
i = 1
count = 0
while i*i < n:
    if n % i == 0:
        count += 2
    i += 1
count += i*i == n
print(count)
1
Эксперт Python
8199 / 4323 / 1833
Регистрация: 27.03.2020
Сообщений: 7,148
22.03.2021, 16:21 8
alilxxey, А вообще количество делителей находится в том числе по формуле :
(p1+1)*(p2+1)*...*(pn+1), где pi -> количество простого делителя числа, или его степень
Например, 200 = [2, 2, 2, 5, 5] содержит три двойки и две пятерки; значит количество делителей числа 200 => (3+1)*(2+1)=12 => 1,2,4,5,8,10,20,25,40,50,100,200
Еще один из кодов нахождения количества делителей (рекурсия модна нынче )
Python
1
2
3
4
5
6
7
8
def factor(num, ans = 2, k = 1, res = 1):
    if num < ans:
        return res*k
    if num % ans != 0:
        return factor(num, ans+1, 1, res*k)
    return factor(num // ans, ans, k + 1, res)
 
print(factor(6300))
0
Говнокодер
1 / 1 / 0
Регистрация: 16.02.2022
Сообщений: 27
31.03.2023, 18:03 9
eaa, Спасибо большое, никак не мог найти достаточно быстрый алгоритм, лазил лазил по форумам и сайтам, и тут на вас наткнулся)
0
31.03.2023, 18:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2023, 18:03
Помогаю со студенческими работами здесь

Найти все делители натурального числа N.
Найти все делители натурального числа N.

Вычислить делители большого целочисленного числа
Здравствуйте! Моя задача состоит в том, чтобы вычислить делители большого целочисленного числа....

Получить все простые делители числа
Дано натуральное число n. Получить все простые делители этого числа Перевести на Python CLS...

Получить все делители числа q, взаимно простые с p
Даны целые числа p и q. Получить все делители числа q, взаимно простые с p.

Вывести все делители числа в порядке возрастания
Простыми называются такие натуральные числа, у которых ровно два делителя: 1 и само это число (они...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru