Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/222: Рейтинг темы: голосов - 222, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 06.10.2020
Сообщений: 4

Найти числа в заданном диапазоне имеющие ровно два различных натуральных делителя

06.10.2020, 14:58. Показов 44362. Ответов 10

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
b=[0]
for i in range (174457,174505):
    k=0
    for j in range (2, i):
        if (i%j == 0):
            k=k+1
            if (k>2):
                break
            b[k]=j
    if (k ==2):
        print (b[1], '    ',b[2])
Код программы, делаю уже несколько часов и не могу разобраться. Подскажите пожалуйста где ошибка.
Текст задания:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в две соседних столбца на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке также должны следовать в порядке возрастания.

Например, в диапазоне [5; 9] ровно два целых различных натуральных делителя имеют числа 6 и 8, поэтому для этого диапазона вывод на экране должна содержать следующие значения:

2 3

2 4
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2020, 14:58
Ответы с готовыми решениями:

Найти на числовом отрезке [a; b] числа, имеющие ровно два различных натуральных делителя
Напишите программу, которая ищет среди целых чисел, принадлежащих заданному числовому отрезку , числа, имеющие ровно два различных...

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

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

10
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
06.10.2020, 17:21
vadukkkk, числа 4 и 16 подходят?
4 -> [2]
16 -> [2,4,8]
0
0 / 0 / 0
Регистрация: 06.10.2020
Сообщений: 4
06.10.2020, 18:49  [ТС]
Gdez, Нет, нужно найти числа в заданном промежутке. И у которых 2 делателя не считая 1 и само число. Помогите пожалуйста, так и не смог разобраться где ошибка (((
0
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
06.10.2020, 19:16
vadukkkk, попробуй это
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def divisors(n):
    p = []
    dd = 2
    while dd * dd < n:
        if n % dd == 0:
            p.extend([dd, n//dd])
        dd += 1
    p = list(set(p))
    p.sort()    
    return p
    
a, b, = map(int,input().split())
for i in range(a, b) :
    one = divisors(i)
    for j in range(i + 1, b + 1) :
        two = divisors(j)
        if len(one) == len(two) and two and one and len(set(one) ^ set(two)) == 2 :
            print(*one)
            print(*two)
Но это, если 4; 16 не подходят под условие
Если подходят, то из уловия нужно убрать проверку на равенство количества делителей

Добавлено через 1 минуту
Кстати, вроде в отрезке [174457; 174505] нет таких чисел - ничего не выведет

Добавлено через 12 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def divisors(n):
    p = []
    dd = 2
    while dd * dd < n:
        if n % dd == 0:
            p.extend([dd, n//dd])
        dd += 1
    p = list(set(p))
    p.sort()    
    return p
    
a, b, = map(int,input().split())
for i in range(a, b) :
    one = divisors(i)
    for j in range(i + 1, b + 1) :
        two = divisors(j)
        if  len(set(one) ^ set(two)) == 2 :
            print(i,one)
            print(j,two)
            print()
print("end")
Это на разницу в два делителя независимо от их количества
0
0 / 0 / 0
Регистрация: 06.10.2020
Сообщений: 4
06.10.2020, 20:07  [ТС]
Gdez, вот решение на Паскале, оно работает и действительно даёт ответ. А на питоне не могу реализовать.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var 
    x, numDel, i, j: longint;
    d: array[1..2] of longint;
begin
    for i := 174457 to 174505 do begin
        numDel := 0;
        for j := 2 to i div 2 do begin
            if i mod j = 0 then begin
                numDel := numDel + 1;
                if numDel > 2 then break;
                d[numDel] := j;
            end;
        end;
        if numDel = 2 then writeln(d[1], ' ', d[2]);
    end;
end.
Вот ответ:
В результате работы программа должна вывести следующее:
3 58153
7 24923
59 2957
13 13421
149 1171
5 34897
211 827
2 87251
0
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
06.10.2020, 20:51
vadukkkk, напиши ответ для этого диапазона

Добавлено через 24 минуты
vadukkkk, вот это другое дело
Условие в топике неверно
Счас

Добавлено через 13 минут
vadukkkk,
Python
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
def divisors(n):
    p = []
    dd = 2
    while dd * dd < n:
        if n % dd == 0:
            p.extend([dd, n//dd])
        dd += 1
    p = list(set(p))
    p.sort()    
    return p
    
a, b, = map(int,input().split())
res = []
for i in range(a, b) :
    one = divisors(i)
    for j in range(i + 1, b + 1) :
        two = divisors(j)
        if  len(one) == len(two) and len(set(one) ^ set(two)) == 4 :
            if (i,one) not in res :
                res.append((i,one))           
            if (j,two) not in res :
                res.append((j,two))
res.sort()
for k,i in res :
    print(*i)
print("end")
            
            
#.     174457 174505
Добавлено через 5 минут
Или все таки 4 и 16 подходит к условиям, то
Python
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
def divisors(n):
    p = []
    dd = 2
    while dd * dd < n:
        if n % dd == 0:
            p.extend([dd, n//dd])
        dd += 1
    p = list(set(p))
    p.sort()    
    return p
    
a, b, = map(int,input().split())
res = []
for i in range(a, b) :
    one = divisors(i)
    for j in range(i + 1, b + 1) :
        two = divisors(j)
        if  len(set(one) ^ set(two)) == 2 :
            if one and (i,one) not in res :
                res.append((i,one))           
            if two and (j,two) not in res :
                res.append((j,two))
res.sort()
for k,i in res :
    print(*i)
print("end")
            
            
#.     174457 174505
Кстати, этот код те же числа выводит
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
06.10.2020, 21:03
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
a = 174457
b = 174505
for x in range(a, b+1):
    count = 0
    d = (0, 0)
    for i in range(2, int(a**.5)):
        if x % i == 0:
            d = i, x//i
            count += 1
        if count > 1:
            break
    if count == 1:
        print(*d)
1
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
06.10.2020, 21:06
eaa, а я искал разницу в количестве делителей
0
0 / 0 / 0
Регистрация: 06.10.2020
Сообщений: 4
07.10.2020, 13:39  [ТС]
eaa, А если в задаче нужно найти число у которого 4 или 6 делителей. Тогда тут не получится использовать эту программу. Нужно как-то записывать эти делители или в список или в массив.
Например, в диапазоне [2; 48] ровно шесть чётных целых различных натуральных делителей имеют числа 24, 36 и 40, поэтому для этого диапазона вывод на экране должна содержать следующие значения:

2 4 6 8 12 24

2 4 6 12 18 36

2 4 8 10 20 40
0
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
07.10.2020, 16:37
eaa, а для [34,49] ответ какой ?

Добавлено через 2 часа 3 минуты
vadukkkk,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
a = int(input())
b = int(input())
n_divisors = int(input())
for x in range(a, b+1):
    count = 0
    d = (0, 0)
    for i in range(2, int(a**.5) + 1):
        if x % i == 0:
            d = i, x//i
            count += (2 if x//i - i else 1)
        if count > n_divisors:
            break
    if count == n_divisors:
        print(*d)
0
0 / 0 / 0
Регистрация: 19.06.2021
Сообщений: 1
19.06.2021, 13:06
Python
1
2
3
4
5
6
7
8
9
10
11
n = 0
for i in range (174457, 174505 + 1):
    for g in range (2, int(i**0.5) + 1):
        if i % g == 0:
            x = i//g
            n += 2
            if n > 2:
                break
    if n == 2:
        print( i//x, ' ', x)
    n = 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.06.2021, 13:06
Помогаю со студенческими работами здесь

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

Найти числа имеющие ровно два различных натуральных делителя
Здравствуйте! Готовлюсь к КЕГЭ 2021 и пишу в основном на с++.Т.к все разборы задач на паскале или питоне, то решила обратиться к вам т.к не...

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

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

Даны два натуральных числа a и b, имеющие ровно 6 различных делителей
Даны два натуральных числа a и b. Найдите все числа, принадлежащие отрезку , имеющие ровно 6 различных делителей. Выведите эти делители для...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru