Форум сайта python.su
0
Доброго времени суток. Есть программа на паскале, суть которой вывести все простые делители заданного числа. Она абсолютно рабочая и функционирует без каких-либо проблем(во всяком случае преподаватель ничего подобного не заметил)
“Var
i,j,n,k: integer;
Begin
Writeln('n=');
Readln(n);
for i:=2 to n do
begin
if n mod i=0 then
begin
k:=0;
for j:=2 to (i div 2) do
if i mod j=0 then k:=k+1;
if k=0 then writeln(i);
end;
end;
end.”
Суть в том, чтобы мне нужно перевести её на Python. Я переписал код с учётом синтаксиса языка Python. Она компилируется. Ввожу для проверки число 42(в результате пользователь должен получит числа 2,3,7). Но программа выводит ошибку:
“Input n:42
Traceback (most recent call last):
File ”D
Прога/Лаб3/python/1.py“, line 5, in <module>
if (n%i)==0:
ZeroDivisionError: integer division or modulo by zero”
Я начал читать мануалы по ошибке и во многих местах написано, что я провожу деление на ноль(хотя, если я что-то и понимаю, в чём я теперь очень сомневаюсь,деления на ноль в программе и нет вовсе).
Код прилагается:
i=2 j=2 n=int(input('Input n:')) for i in range(n): if (n%i)==0: k=0 for j in n%2: if i%j==0: k=k+1 if k==0: print(i)
Офлайн
568
>>> 1 % 0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero >>> >>>range(3) [0, 1, 2]
Офлайн
0
>>> 1 % 0
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>>
>>>range(3)
Input n:42 Traceback (most recent call last): File "D:/ИПСА/Прога/Лаб3/python/1.py", line 4, in <module> for i in n: TypeError: 'int' object is not iterable
Офлайн
20
funny0012
Просьба помочь довести программу до ума.
n=int(input('Input n: ')) lst = [] for i in range(2, n+1 // 2): if (n % i == 0): for j in lst: if i % j == 0: break else: lst.append(i) if lst == []: print("{0} - простое число".format(n)) else: print("Простые делители числа {0}: {1}".format(n, lst))
Офлайн