Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 8, 2015 18:22:40

funny0012
Зарегистрирован: 2015-10-25
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с переводом из одного языка программирования в другой

Доброго времени суток. Есть программа на паскале, суть которой вывести все простые делители заданного числа. Она абсолютно рабочая и функционирует без каких-либо проблем(во всяком случае преподаватель ничего подобного не заметил)
“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)
Просьба помочь довести программу до ума. Заранее благодарю

Офлайн

#2 Ноя. 8, 2015 18:27:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Проблема с переводом из одного языка программирования в другой

>>> 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]



Офлайн

#3 Ноя. 8, 2015 18:34:53

funny0012
Зарегистрирован: 2015-10-25
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с переводом из одного языка программирования в другой

>>> 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

Как быть в такой ситуации?

Офлайн

#4 Ноя. 9, 2015 00:47:21

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Проблема с переводом из одного языка программирования в другой

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))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version