Форум сайта python.su
0
f=range(2,21) print f v=f[:] o=[] for x in v: for y in range(2,x): if x%y==0 and x!=y: o.append(x) print o
[2,6,6,8,8,9,10,10,12,12,12,12]
f=range(2,6) print f v=f[:] o=[] for x in v: for y in range(2,x): if x%y==0: f.remove(x) print f, v print f
f=range(2,21) print f v=f[:] o=[] for x in v: for y in range(2,x): if x%y==0: f.remove(x) print f, v print f
# -*- coding: utf-8-*- #z=5*7*13*29 #print z # 5,7,13 and 2 are prime factors of 13195 #Простое число: имеет только два делителя (1 и оно само) x=13195 s=[] r=range(13195/2) # Дальше 13195/2 все равно нет делителей 13195, кроме его самого. r.remove(0) e=range(10) e.remove(0) e.remove(1) for x in r: # Составляем список всех чисел, на которые 13195 делится нацело if 13195%x==0: s.append(x) o=[] for x in s: for y in e: if x%y==0 and x!=y: # Убираем из них числа, которые нацело делятся на числа от 1 до 10 o.append(x) for z in range(2,x): # Убираем из них числа, которые нацело делятся на простые делители, попавшие в список s if x%z==0: o.append(x) for x in o: # Убираем эти числа, которые не простые, получаем список простых делителей 13195 if x in s: s.remove(x) w=max(s) # Ищем максимальлный простой делитель print w # Ответ
Значительно позже арабский математик ибн ал-Банна предложил делать перебор целых чисел, не до n, а до \sqrt{n}, что позволило уменьшить количество операций.
Отредактировано Aspergo (Март 18, 2015 02:05:37)
Офлайн
857
Та же задача.
AspergoЕсли число составное, то у него есть два делителя, не равных единице и самому числу. Какие это числа? Либо они равны друг другу (оба равны корню числа), либо одно меньше другого (одно меньше корня, а другое больше).
И, возможно, кто-нибудь знает, откуда вообще взялась цифра в корень из n?
Отредактировано py.user.next (Март 18, 2015 03:29:48)
Офлайн
0
Кажется, понятно. Спасибо
Отредактировано Aspergo (Март 18, 2015 17:43:15)
Офлайн