Найти - Пользователи
Полная версия: Проблема с переводом из одного языка программирования в другой
Начало » Центр помощи » Проблема с переводом из одного языка программирования в другой
1
funny0012
Доброго времени суток. Есть программа на паскале, суть которой вывести все простые делители заданного числа. Она абсолютно рабочая и функционирует без каких-либо проблем(во всяком случае преподаватель ничего подобного не заметил)
“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)
Просьба помочь довести программу до ума. Заранее благодарю
FishHook
>>> 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]
funny0012
>>> 1 % 0
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>>
>>>range(3)

Если убрать range, то ему не нравятся типы.

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

Как быть в такой ситуации?
old_monty
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))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB