Форум » Обработка целых чисел » 25.Задача №136 » Ответить

25.Задача №136

Чаговец: Помогите найти ошибку! {136.Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [25317; 51237], которые имеют хотя бы 6 различных простых делителей. Делители 1 и само число не учитываются. Запишите в ответе для каждого найденного числа само число и его максимальный простой делитель.} [pre2] function isprime(i:integer):boolean; begin result:=true; for var j:=2 to i div 2 do if i mod j=0 then begin result:=false; EXIT; end; end; begin for var x:=25317 to 51237 do begin var k:=0;var d:=0; var j:=2;var n:=x; while n>1 do begin if (n mod j=0) and isprime(j) then begin k+=1;d:=j; n:=n div j; end else j+=1; end; if k>=6 then println(x,d); end; end.[/pre2] У меня получается очень много чисел.

Ответов - 2

Поляков: Чаговец пишет: else j+=1; Странно тут видеть else.

OlgaChe1: [pre]def isPrime (n): if n > 2 and n %2 == 0: # or n == 1: return False for i in range (3, int(n**0.5)+1, 2): if n % i == 0: return False return True for i in range (25317,51237+1): a = [] for j in range (2,int(i**0.5)+1): if i% j == 0 and isPrime (j): a.append (j) if i% j == 0 and i != (int(i**0.5))**2 and isPrime (i//j): a.append (i//j) if len (a) >= 6: print (i,a[-1])[/pre]



полная версия страницы