На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 37
ссылка на сообщение  Отправлено: 09.03.22 04:43. Заголовок: Тема 25 задача 2853


#Рассматриваются целые числа, принадлежащих числовому отрезку [309829; 365874], которые представляют собой произведение двух различных простых делителей. Найдите такое из этих чисел, у которого два простых делителя меньше всего отличаются друг от друга. В ответе запишите простые делители этого числа в порядке возрастания.
Задача имеет два ответа
 
#создадим список простых чисел до 365875
p = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
for i in range(31, 365875):
j = 0
f = True
while p[ j] * p[ j] <= i and f:
if i % p[ j] == 0:
f = False
j += 1
if f:
p.append(i)

ans = []
d = 100 # разница между делителями
# найдём простое число ближайщее к корню нижней границы диапазона
j = 0
while p[ j] * p [j] < 309829:
j += 1
j -= 1
for x in range(309829, 365875):
i = j
while p[ i] * p[ i] < x:
if x % p[ i] == 0 and x // p[ i] in p:
if x // p[ i] - p[ i] < d:
d = x // p[ i] - p[ i]
ans = [(p[ i], x// p [ i])]
elif x // p[ i] - p[ i] == d:
ans.append((p[ i], x// p[ i]))
i += 1
for x in ans:
print(x)
#получаем два ответа:
#569 571
#599 601


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]


Администратор




Сообщение: 3367
ссылка на сообщение  Отправлено: 09.03.22 06:46. Заголовок: Спасибо, уточнил усл..


Спасибо, уточнил условие.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 22.12.23 12:49. Заголовок: у моей задачи доп ус..


у моей задачи доп условие есть, вывести делители только у одного числа - наименьшего, подходящего условию

mass = []
for i in range(309829, 365875):
flag = 0
a = [] # делители
m = []
number = i
for j in range(1, int(i ** 0.5) + 1):
if i % j == 0:
a.append(j)
if i // j != j:
a.append(i // j)
b = [] # простые делители
for k in range(len(a)):
c = set() # делители делителей
c.add(a[k])
for o in range(1, int(a[k] ** 0.5) + 1):
if a[k] % o == 0:
c.add(o)
if len(c) > 2:
break
if len(c) == 2 and a[k] != 1:
b.append(a[k])
if len(b) >= 2:
for x in range(len(b)):
for y in range(len(b)):
if b[x] * b[y] == i and b[x] != b[y]:
mass.append(i)
flag = 1
mm = abs(b[x] - b[y])
m.append(mm)
min_m = min(m)
break
if (flag == 1 and i == mass[0]) or (flag == 1 and minus_new > min_m):
num_new = i
pros_new = b
minus_new = min_m
print("Подходящее число: ", num_new)
print("Минимальная разница простых делителей: ", minus_new)
print("Простые делители по возрастанию: ", *sorted(pros_new))

#Подходящее число: 324899
#Минимальная разница простых делителей: 2
#Простые делители по возрастанию: 569 571

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1591
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет